R列表获取每个元素的第一个项目

20

这个问题可能对某些人来说很容易回答,但我在任何地方都没有找到答案。

我正在尝试从R中的一个列表中返回每个元素的第一个项目。

> a
[1] 1 2 3
> b
[1] 11 22 33
> c
[1] 111 222 333
> d <- list(a = a,b = b,c = c)
> d
$a
[1] 1 2 3

$b
[1] 11 22 33

$c
[1] 111 222 333

基于我上面列出的列表d的构建,我想返回一个由三个值组成的向量:

return  1 11 111

2
你可以使用sapply(d, function(x) x[1])来实现。 - amatsuo_net
@amatsuo_net,谢谢你解决了这个问题。如果你愿意,你可以发布答案——我简直不敢相信我自己找不到它! - gmarais
本质上是 https://dev59.com/11gQ5IYBdhLWcg3wRR5j 的副本。 - Montgomery Clift
2个回答

42

sapply(d, "[[", 1)应该就足够了。

稍作解释:

sapply:遍历列表中的元素
[[:是子集函数。因此我们要求sapply对每个列表元素使用子集函数。
1: 是传递给 "[["的参数

事实证明,"["或"[["可以以传统的方式调用,这可能有助于说明这一点:

x <- 10:1
"["(x, 3)
 # [1] 8

1
我想不出为什么这个能够工作。是因为列表的定义方式还是因为sapply的字面意思? - gmarais
@gmarais 请也接受(在旁边打勾)以便我们可以考虑它已经关闭。谢谢。 - Sotos

11
你可以做。
 output <- sapply(d, function(x) x[1])

如果您不需要这些名称

 names(output) <- NULL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接