我有一個串列,想d通過將現有串列條目系結在一起來創建一個新的串列條目,如下所示:
library(data.table)
## this works fine
example_list <- list("a" = data.frame(x = 1),
"b" = data.frame(x = 2),
"c" = data.frame(x = 3))
example_list[["d"]] <- rbindlist(example_list[c("a", "b", "c")])
是否可以在創建d原始串列的同時創建?我想做這樣的事情:
## this does not work
example_list <- list("a" = data.frame(x = 1),
"b" = data.frame(x = 2),
"c" = data.frame(x = 3),
"d" = rbindlist(.[c("a", "b", "c")]))
編輯:我需要明確參考以前的串列條目,因此這樣的事情是行不通的:
## ineligible
example_list <- list("a" = data.frame(x = 1),
"b" = data.frame(x = 2),
"c" = data.frame(x = 3),
"d" = data.frame(x = 1) %>%
rbind(data.frame(x = 2)) %>%
rbind(data.frame(x = 3)))
uj5u.com熱心網友回復:
如果我們想使用 a %>%,請將其包裹在里面{}
library(dplyr)
library(data.table)
list("a" = data.frame(x = 1),
"b" = data.frame(x = 2),
"c" = data.frame(x = 3)) %>%
{c(., d = list(rbindlist(.[c("a", "b", "c")])))}
在 中base R,我們可以使用從串列中獲取資料within.list
within.list(list("a" = data.frame(x = 1),
"b" = data.frame(x = 2),
"c" = data.frame(x = 3)), d <- rbindlist(list(a, b, c)))
-輸出
$a
x
1 1
$b
x
1 2
$c
x
1 3
$d
x
1: 1
2: 2
3: 3
uj5u.com熱心網友回復:
我不認為基礎 R 支持(也不是我能想到的沒有類似黑客的包)。我推斷您希望在不將單個框架(例如,a,b)留在主環境中的情況下執行此操作,因此我們可以使用local環境來執行我們想要的操作。
example_list <- local({
a <- data.frame(x = 1)
b <- data.frame(x = 2)
c <- data.frame(x = 3)
d <- rbindlist(list(a, b, c))
list(a=a, b=b, c=c, d=d)
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/389588.html
標籤:r
