[英]Subset a list of data.frames and return list of data.frames
我意識到,這個問題很相似, 這一個 (其中包括),但是我似乎無法修改的解決方案(S),以適應我的問題。 如果需要,請標記為重復或鏈接到現有答案。 以下是從上述問題略微修改的一些示例數據:
a=c(1,2,3,4,5,6)
b=c(4,5,6,5,5,5)
c=c(3,4,5,6,7,8)
A=data.frame(a=a,b=b,c=c)
B=data.frame(a=c,b=b,c=a)
C=data.frame(a=b,b=c,c=a)
l <- list(A, B, C)
我想生成一個數據幀列表,它是與條件匹配的原始數據幀(在l
)的子集。 例如,我可能希望返回大於或等於4的所有值,其中較低的值替換為NA
,以便我的新列表subsetl
看起來如下所示。 (我不關心將NA保持在數據幀中的正確位置。)
> subsetl
[[1]]
a b c
1 NA 4 NA
2 NA 5 4
3 NA 6 5
4 4 5 6
5 5 5 7
6 6 5 8
[[2]]
a b c
1 NA 4 NA
2 4 5 NA
3 5 6 NA
4 6 5 4
5 7 5 5
6 8 5 6
[[3]]
a b c
1 4 NA NA
2 5 4 NA
6 5 NA
4 5 6 4
5 5 7 5
6 5 8 6
我希望我的例子足夠明白,但如果沒有,請告訴我。 毫無疑問,使用lapply
, sapply
等是簡單的,但是在使用列表時我無法正確使用語法,特別是當數據幀列表是期望的結果時。
這應該為你做:
subsetl <- lapply(l,function(x) {
x[x<4] <- NA
return(x)
})
結果:
>subsetl
[[1]]
a b c
1 NA 4 NA
2 NA 5 4
3 NA 6 5
4 4 5 6
5 5 5 7
6 6 5 8
[[2]]
a b c
1 NA 4 NA
2 4 5 NA
3 5 6 NA
4 6 5 4
5 7 5 5
6 8 5 6
[[3]]
a b c
1 4 NA NA
2 5 4 NA
3 6 5 NA
4 5 6 4
5 5 7 5
6 5 8 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.