从R中列表的每个元素中提取特定对象

时间:2013-01-24 17:19:23

标签: r list subset

我有一个由不同长度的不同数字向量组成的列表,我想知道您是否有关于如何使用相同索引(例如,每个元素的第三个对象)提取对象的任何建议

想象一下我有这样的事情:

States<-list(Italy=rbinom(5,4,0.5),Spain=rnorm(12,6,1),Greece=sample(1:14, 6))
> States
$Italy
[1] 2 2 1 4 2

$Spain
 [1] 5.403135 5.616146 7.224063 5.602878 6.738619 6.732706 7.636093 5.917246 5.901094
[10] 5.818594 7.420575 5.545782

$Greece
[1]  8  9  3 11  4 14

如何获得一个数字向量,其中每个元素的第一个对象将是一个矢量,如:

[1] 2 5.403135 8

谢谢!

1 个答案:

答案 0 :(得分:1)

考虑使用lapplysapply,这最终会让您获得相同的结果:

lapply

> lapply(States,function(x)x[1])
$Italy
[1] 2

$Spain
[1] 6.694136

$Greece
[1] 10
> unlist(lapply(States,function(x)x[1]), use.names=FALSE)
[1]  2.000000  6.694136 10.000000

sapply

> sapply(States,function(x)x[1])
    Italy     Spain    Greece 
 2.000000  6.694136 10.000000
> as.vector(sapply(States,function(x)x[1]))
[1]  2.000000  6.694136 10.000000