R:将元素放入列表中

时间:2018-03-30 19:06:58

标签: r list vector

这里的总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转换为一个列表,其中每个元素都是它自己的组件,那我就会膨胀。

感谢一帮(也耐心等待!)

3 个答案:

答案 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实际上只是listas.list()只会为您提供一个列列表,在本例中为list(x1$column1)

您需要在向量上运行as.list才能获得所需的结果。这些都可以起作用:

as.list(x1$your_column_name)
as.list(x1[["your_column_name"]])