【发布时间】:2020-02-07 05:44:21
【问题描述】:
这个问题是my previous question 的后续问题。在这个问题中,在我下面的split.default() 调用之后,我得到了一个名为L 的data.frames 的命名 list。
问:我想知道如何压缩L 中的每个data.frame,其每一列都由一个常数组成? (如果我知道列是常数的data.frames的名称呢?)
我想要的输出如下所示。
r <- list(
data.frame(study.name = rep("Jacob", 6),
X = c(2,2,1,1,NA, NA),
Y = c(1,1,1,2,1,NA),
A = rep(1, 6),
B = rep(4, 6)),
data.frame(study.name = rep("Jon", 6),
X = c(1,NA,3,1,NA,NA),
G = c(1,1,1,2,NA,NA),
A = rep(3, 6),
B = rep(7, 6)))
DATA <- do.call(cbind, r)
nm1 <- Reduce(intersect, lapply(r, colnames))[-1]
L <- split.default(DATA[names(DATA) %in% nm1], names(DATA)[names(DATA) %in% nm1])
期望的输出:
# $A
# A A.1
# 1 1 3
# $B
# B B.1
# 1 4 7
# $X
# X X.1
# 1 2 1
# 2 2 NA
# 3 1 3
# 4 1 1
# 5 NA NA
# 6 NA NA
【问题讨论】:
标签: r list function loops dataframe