0
如何將lapply函數構造爲通過索引提取特定對象?我有一個列表清單。我現在想要獲得列表中的每個第2,4和5個元素,並將它們放入數據框中。我想最簡單的方法是使用lapply,只是得到的條目是這樣的:通過lapply過濾R中的對象列表
list <-lapply(ll, function(x) { x[[2]]; x[[4]]; x[[5]] }
但是,因爲它似乎是行不通的。
如何將lapply函數構造爲通過索引提取特定對象?我有一個列表清單。我現在想要獲得列表中的每個第2,4和5個元素,並將它們放入數據框中。我想最簡單的方法是使用lapply,只是得到的條目是這樣的:通過lapply過濾R中的對象列表
list <-lapply(ll, function(x) { x[[2]]; x[[4]]; x[[5]] }
但是,因爲它似乎是行不通的。
這將工作:
ll <- list(as.list(1:10),
as.list(11:20),
as.list(21:30))
library(magrittr)
output1 <- ll %>% sapply(function(x){c(x[[2]],x[[4]],x[[5]])}) %>% t %>% as.data.frame
# or with base syntax:
output2 <- as.data.frame(t(sapply(ll,function(x){c(x[[2]],x[[4]],x[[5]])})))
# V1 V2 V3
# 1 2 4 5
# 2 12 14 15
# 3 22 24 25
你的函數返回最後一次操作,而你的情況是``X [[5]]`的結果。你之前做的2個操作都丟失了。
不知道你想要什麼這個data.frame的樣子,但你可以
lapply(ll, `[`, c(2,4,5))
提取2,4,5元,如果你想將這些成排,你可以這樣做
do.call("rbind",lapply(ll, `[`, c(2,4,5)))
如果你想讓他們成爲列,你可以做
data.frame(sapply(ll, `[`, c(2,4,5)))