【发布时间】:2018-02-01 22:39:48
【问题描述】:
我刚刚开始使用列表和 lapply 功能,但遇到了一些困难。我有一个包含多个数据框的列表,并希望对满足特定条件的数据框进行子集化并将其保存为单独的列表。例如,
l <- list(data.frame(PPID=1:5, gender=c(rep("male", times=5))),
data.frame(PPID=1:5, gender=c("male", "female", "male", "male", "female")),
data.frame(PPID=1:3, gender=c("male", "female", "male")))
print(l)
我想要做的是仅对同时具有性别(男性和女性)的列表进行子集化,并将其保存为另一个列表。所以我的结果应该是另一个列表,它只包含 l 中的第二个和第三个数据帧。
我尝试过的事情包括:
ll <- subset(l, lapply(1:length(l), function(i) {
length(levels(l[[i]]$gender)) == 2
}))
ll <- subset(l, lapply(1:length(l), function(i) {
l[[i]]$gender == "male" | l[[i]]$gender == "female"
}))
但这给我返回了一个 0 的列表。 任何帮助将不胜感激!!
【问题讨论】: