考慮R A名單的第一行,例如可以訪問R中的列表
A=list()
A[[1]]=c(1,2)
A[[2]]=c(3,4)
是否有可能返回這給列表中的每個條目的第一個元素(這裏c(1,3)
矢量)?
作爲擴展:如果列表的元素不僅僅是向量而且是矩陣。是否有可能獲得每個矩陣包含第二行的第一個元素的向量?
考慮R A名單的第一行,例如可以訪問R中的列表
A=list()
A[[1]]=c(1,2)
A[[2]]=c(3,4)
是否有可能返回這給列表中的每個條目的第一個元素(這裏c(1,3)
矢量)?
作爲擴展:如果列表的元素不僅僅是向量而且是矩陣。是否有可能獲得每個矩陣包含第二行的第一個元素的向量?
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
I.第一方案sapply()
功能只是第一要素
sapply(A,'[[',1)
# [1] 1 3 5
爲了獲取可以說,第一,第三,每個嵌套表的第4個元素。不適用於此示例
sapply(A,`[`,c(1,3,4))
二。第二個解決方案使用for
循環
for(i in 1:length(A)){
print (A[[i]][1])
}
# [1] 1
# [1] 3
# [1] 5
謝謝。這只是一個簡單的例子。我的列表要大得多,所以我想也許有沒有循環的功能。 –
您可以使用'sapply()'獲取嵌套列表對象的所有第一個元素的向量表單。 –
試試這個如下:使用
sapply(A, "[", 1)
你也可以這樣做:
unlist(lapply(A, "[[", 1))
# [1] 1 3
對於第二個元素:
爲了做到這一點所有:
t(sapply(seq_along(A[[1]]), function(x) unlist(lapply(A, "[[", x))))
# [,1] [,2]
#[1,] 1 3
#[2,] 2 4
作爲我的問題的延伸:如果列表的元素不僅僅是矢量,而且還包含矩陣,那又是什麼?我怎麼能訪問每個矩陣的第二行的每個第一個元素? –
@ fabian92這是另一個問題。你可以發佈它並查看答案或編輯你的問題來反映這一點。 – 989
不是最優雅的,但你可以使用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
c(A [[1]] [1],A [[2]] [1]) – Berecht