我有一个名为G
的data.frames列表。
在BASE R中,我想知道如何分别提取元素dint
和SD
中的元素AA
和BB
data.frame别名 包含 short
del1
和del2
(请参阅我的 所需输出 )?
G <- list(AA = list(short = data.frame(dint = 5:7, SD = 0:2), short..2 = NULL, del1 = data.frame(dint = 1:3, SD = 2:4),
del1..2 = NULL, del2 = NULL),
BB = list(short = data.frame(dint = 1:4, SD = 2:5), short..2 = NULL, del1 =
data.frame(dint = 5:6, SD = 3:4), del1..2 = NULL, del2 = data.frame(dint = 6, SD = 1)) )
我想要的输出是:
# dints:
dints = list(
short = list(AA = c(short = 5:7), BB = c(short = 1:4)),
del1 = list(AA = c(del1 = 1:3), BB = c(del1 = 5:6)),
del2 = list(AA = c(del2 = NULL), BB = c(del2 = 6)))
# SDs:
SDs = list(
short = list(AA = c(short = 0:2), BB = c(short = 2:5)),
del1 = list(AA = c(del1 = 2:4), BB = c(del1 = 3:4)),
del2 = list(AA = c(del2 = NULL), BB = c(del2 = 1)))
答案 0 :(得分:1)
我认为此功能应提取您所需的内容。
var valor = value?.ToString();
我使用列表而不是命名向量作为最内层的值。不知道删除foo <- function(G, val="dint", cols = c("short", "del1", "del2")) {
named <- function(x, n) {if (is.null(x)) x else setNames(list(x), n)}
Map(function(col) Map(function(n) named(G[[n]][[col]][[val]], col), names(G)), cols)
}
dints <- foo(G, "dint")
SDs <- foo(G, "SD")
值的逻辑是什么,所以我只是做了一个参数来指定要提取的子值。