2017-11-16 24 views
1

リスト内の特定の列を減算したい。私はまだapply関数を適切に使う方法を学んでいます。例えば、私は事前にRリスト内の列を減算する

> x(b) 

[[1]] 
    X12.16 X3...2.6 <newcol> 
1  12  6   6 
2  13  9   4 
3  14  12   2 
4  15  15   0 
5  16  18  -2 

[[2]] 
    X10.14 X2...1.5 <newcol> 
1  10  2   8 
2  11  4   7 
3  12  6   6 
4  13  8   5 
5  14  10   4 

感謝を得るように、私はいくつかの関数xを希望

> b <- list(data.frame(12:16, 3*2:6), data.frame(10:14, 2*1:5)) 
> b 

[[1]] 
    X12.16 X3...2.6 
1  12  6 
2  13  9 
3  14  12 
4  15  15 
5  16  18 

[[2]] 
    X10.14 X2...1.5 
1  10  2 
2  11  4 
3  12  6 
4  13  8 
5  14  10 

を与えられました。

答えて

3

あなたdata.framesがいいと一貫性のある名前を持っていた場合、あなたはここでlapply

b <- list(data.frame(a=12:16, b=3*2:6), data.frame(a=10:14, b=2*1:5)) 
lapply(b, transform, c=a-b) 
1

transformを使用することが解決策です:dplyr

lapply(b, function(x) { 
    x[, 3] <- x[, 1] - x[, 2] 
    x 
}) 

[[1]] 
    X12.16 X3...2.6 V3 
1  12  6 6 
2  13  9 4 
3  14  12 2 
4  15  15 0 
5  16  18 -2 

[[2]] 
    X10.14 X2...1.5 V3 
1  10  2 8 
2  11  4 7 
3  12  6 6 
4  13  8 5 
5  14  10 4 
0

library(dplyr) 
lapply(b, function(x) x %>% mutate(new_col = .[[1]]-.[[2]])) 

結果:

[[1]] 
    X12.16 X3...2.6 new_col 
1  12  6  6 
2  13  9  4 
3  14  12  2 
4  15  15  0 
5  16  18  -2 

[[2]] 
    X10.14 X2...1.5 new_col 
1  10  2  8 
2  11  4  7 
3  12  6  6 
4  13  8  5 
5  14  10  4