如何从列表中获取值?

Nir*_*tri -1 r list

我有一个尺寸统一的清单,如下所示。我想提取键的值。我该怎么做?

我通过使用像这样的names(allsum)地方隔离了钥匙allsum

`$1999
[1] 7332967

$2002
[1] 5635780

$2005
[1] 5454703

$2008
[1] 3464206`
Run Code Online (Sandbox Code Playgroud)

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

for(a in allsum) {
  print(a[[1]])
}
Run Code Online (Sandbox Code Playgroud)

我试过了,它可以工作,但是我想知道我们是否可以使用某些功能或不使用任何显式循环。

我尝试使用unlist 以下操作会发生什么

c1 <- unlist(allsum) 
 #1999    2002    2005    2008 
#7332967 5635780 5454703 3464206
Run Code Online (Sandbox Code Playgroud)

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

Nir*_*tri 7

@Sotos 非常感谢。

我想我只是在找这个!!

unname(unlist(allsum))


Ken*_*HBS 5

关于什么

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

paste(unlist(allsum))
# [1] "7332967" "5635780" "5454703" "3464206"
Run Code Online (Sandbox Code Playgroud)

编辑:

如注释中所指出,paste会将数值转换为字符串。

您可以使用以下方法解决创建的问题paste(unlist(allsum))

as.numeric(paste(unlist(allsum))
# [1] 7332967 5635780 5454703 3464206
Run Code Online (Sandbox Code Playgroud)

或者通过在注释中使用Sotos的建议完全避免该问题:

unname(unlist(allsum))
# [1] 7332967 5635780 5454703 3464206
Run Code Online (Sandbox Code Playgroud)

  • 我不建议这样做。它将值转换为字符。为什么不简单地`unname`? (2认同)