簡體   English   中英

通過lapply過濾R中的對象列表

[英]Filtering List of Objects in R through lapply

如何構造一個lapply函數來通過索引提取特定對象? 我有一份清單。 我現在想要獲得列表中每個偶數的第2,第4和第5個元素並將它們放入數據框中。 我認為最簡單的方法是使用lapply並簡單地獲取如下條目:

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看起來像什么,但您可以使用提取2個,4個和5個元素

lapply(ll, `[`, c(2,4,5))

如果你想將它們變成行,你可以這樣做

do.call("rbind",lapply(ll, `[`, c(2,4,5)))

如果你想讓它們成為專欄,你可以做到

data.frame(sapply(ll, `[`, c(2,4,5)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM