这里的总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]“AAPL”
[[2]] [1]“TSLA”
而对于x2,所有代码都存储为单个列表组件:
[1]“AAPL”,“TSLA”等
因此,如果我能找到一种方法将矢量x2转换为一个列表,其中每个元素都是它自己的组件,那我就会膨胀。
感谢一帮(也耐心等待!)
答案 0 :(得分:0)
这应该有效:
x = sapply(1:5000, list)
长度为5000:
length(x)
[1] 5000
所有元素都是整数:
all(sapply(x, is.integer) == TRUE)
[1] TRUE
这也适用于角色向量:
sapply(c('AAPL', 'MSFT', 'AMZN'), list)
$AAPL
[1] "AAPL"
$MSFT
[1] "MSFT"
$AMZN
[1] "AMZN"
答案 1 :(得分:0)
一个选项可能是:
x1 <- c(list(),1:5000)
str(x1)
# List of 10
# $ : int 1
# $ : int 2
# $ : int 3
# $ : int 4
# $ : int 5
# $ : int 6
# $ : int 7
# $ : int 8
#...
#.....
答案 2 :(得分:0)
x1
是一列数据框。由于data.frame
实际上只是list
,as.list()
只会为您提供一个列列表,在本例中为list(x1$column1)
。
您需要在向量上运行as.list
才能获得所需的结果。这些都可以起作用:
as.list(x1$your_column_name)
as.list(x1[["your_column_name"]])