【发布时间】:2018-09-09 19:48:25
【问题描述】:
这里的总 R 菜鸟。
我在创建股票代码列表时遇到了困难。
情况如下:
我创建了一个从 Quandl 的 API 中提取的代码数据框。
x1<-Quandl.datatable('SHARADAR/SF1',paginate=TRUE,
qopts.columns=c('ticker'))
然后我尝试将此数据框放入列表中。
x2<-as.list(x1)
这样我就可以使用 API 为列表中的所有代码提取数据。
x3<-Quandl.datatable('SHARADAR/SF1',paginate=TRUE,
qopts.columns=c('ticker','dimension','datekey','revenue'),
dimension='ART', calendardate='2015-12-31',ticker=c(x2))
但是,唉,这行不通。
但是,将其与我提取特定代码时进行比较:
Quandl.datatable('SHARADAR/SF1', ticker=c('AAPL', 'TSLA'))
z = list('AAPL','TSLA')
代码自行运行:
x3<-Quandl.datatable('SHARADAR/SF1',paginate=TRUE,
qopts.columns=c('ticker','dimension','datekey','revenue'),
dimension='ART', calendardate='2015-12-31',ticker=z)
这是因为每个代码都是它自己在列表(z)中的组件:
[[1]] [1] “苹果”
[[2]] [1] “特斯拉”
而对于 x2,所有代码都存储为单个列表组件:
[1]“AAPL”、“TSLA”等
因此,如果我能找到一种方法将向量 x2 转换为一个列表,其中每个元素都是它自己的组件。
非常感谢(也感谢您的耐心!)
【问题讨论】:
-
尝试
as.list(1:5000)-1:5000创建一个从 1 到 5000 的序列数字向量。list(...)然后将您刚刚创建的数字向量分配为新列表的第一个元素。 -
当你尝试我原来的建议时会发生什么,x2 = sapply(x1, list)?
-
它仍然是一个长度为 1 的列表。这是否与数据帧的长度等于列数而不是元素数有关?
-
问题应该有人们可以复制的例子。我没有安装 Quandl,所以很难提供帮助。你能显示 str(x1) 的输出吗?如果 x1 是长度为 1 的列表,则尝试 sapply(x1[[1]], list)
-
无论如何都非常感谢!是的,str(x1) 的长度为 1,当我使用 sapply(x1[[1[[,list) 时,它只是回弹:'dataframe': 5375 obs。 1 个变量:$ 股票代码:chr "A" "AA" "AAAP" ...