簡體   English   中英

子集data.frames列表並返回data.frames列表

[英]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

我希望我的例子足夠明白,但如果沒有,請告訴我。 毫無疑問,使用lapplysapply等是簡單的,但是在使用列表時我無法正確使用語法,特別是當數據幀列表是期望的結果時。

這應該為你做:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM