如何从列表中获取值?

时间:2017-05-31 06:28:42

标签: r list

我有一个统一大小的列表,如下所示。我想提取键的值。我该怎么做?

我已使用names(allsum)隔离了密钥,其中allsum看起来像这样

`$1999
[1] 7332967

$2002
[1] 5635780

$2005
[1] 5454703

$2008
[1] 3464206`

我希望[7332967, 5635780, 5454703, 3464206]作为输出。我试过sapply但是直觉很弱。请帮忙。

for(a in allsum) {
  print(a[[1]])
}

我试过这个,它有效,但我想知道我们是否可以使用某个函数或没有任何显式循环来完成它。

我尝试使用unlist 以下是发生的事情

c1 <- unlist(allsum) 
 #1999    2002    2005    2008 
#7332967 5635780 5454703 3464206

我只需要大数字。我如何提取?

4 个答案:

答案 0 :(得分:5)

怎么样?
allsum <- list(`1999` = 7332967, `2002` = 5635780, 
               `2005` = 5454703, `2008` = 3464206)   

paste(unlist(allsum))
# [1] "7332967" "5635780" "5454703" "3464206"

编辑:

正如评论中所指出的,paste会将数值转换为字符串。

您可以使用以下代码解决paste(unlist(allsum))创建的问题:

as.numeric(paste(unlist(allsum))
# [1] 7332967 5635780 5454703 3464206

或者在评论中使用Sotos的建议完全避免这个问题:

unname(unlist(allsum))
# [1] 7332967 5635780 5454703 3464206

答案 1 :(得分:4)

@Sotos非常感谢。

我想我只是在寻找这个!!

unname(unlist(allsum))

答案 2 :(得分:2)

请尝试

as.integer(allsum)
#[1] 7332967 5635780 5454703 3464206

答案 3 :(得分:0)

要获取,list的值作为向量,你应该这样做:

unlist(allsum)