访问R

时间:2016-07-18 12:35:38

标签: r list

考虑R中的列表,例如

A=list()
A[[1]]=c(1,2)
A[[2]]=c(3,4)

是否可以返回一个向量,该向量给出列表中每个条目的第一个元素(这里是c(1,3))?

作为扩展:如果列表的元素不仅仅是向量而是矩阵,那该怎么办?是否有可能获得包含每个矩阵第二行第一个元素的向量?

4 个答案:

答案 0 :(得分:9)

 A=list()
 A[[1]]=c(1,2)
 A[[2]]=c(3,4)
 A[[3]]=c(5,6)

 A
 # [[1]]
 # [1] 1 2

 # [[2]]
 # [1] 3 4

 # [[3]]
 # [1] 5 6

予。使用sapply()函数的第一个解决方案只用于第一个元素

 sapply(A,'[[',1)
 # [1] 1 3 5

For Getting让我们说出每个嵌套列表的第1,第3,第4个元素。不适用于此示例

 sapply(A,`[`,c(1,3,4))

II。使用for循环

的第二个解决方案
 for(i in 1:length(A)){
 print (A[[i]][1])
 }
 # [1] 1
 # [1] 3
 # [1] 5

答案 1 :(得分:4)

请尝试以下方法:

sapply(A, "[", 1) 

答案 2 :(得分:1)

你也可以这样做:

unlist(lapply(A, "[[", 1))

# [1] 1 3

第二个元素:

unlist(lapply(A, "[[", 2))

# [1] 2 4

为所有人做到这一点:

t(sapply(seq_along(A[[1]]), function(x) unlist(lapply(A, "[[", x))))

#     [,1] [,2]
#[1,]    1    3
#[2,]    2    4

答案 3 :(得分:0)

不是最优雅的,但您可以使用as.data.frame()将列表转换为数据框,然后提取第一行。

A=list()
A[[1]]=c(1,2)
A[[2]]=c(3,4)
b<-as.vector(as.data.frame(A)[1,])
b

  c.1..2. c.3..4.
1       1       3