我想將一個函數應用於數據框列表。該函數從每個數據框中的兩列中獲取元素並添加它們,然後將輸出添加到新列中的每個數據框中。將函數應用於數據框列表中的列並追加結果
創建虛擬數據:
df.1 <- data.frame(data=cbind(rnorm(5, 0), rnorm(5, 2), rnorm(5, 5)))
df.2 <- data.frame(data=cbind(rnorm(5, 0), rnorm(5, 2), rnorm(5, 5)))
names(df.1) <- c("a", "b", "c")
names(df.2) <- c("a", "b", "c")
ls.1<- list(df.1,df.2)
names(ls.1) <- c("cat", "dog")
ls.1
看看數據:
> ls.1
$cat
a b c
1 0.7031868 1.730499 4.286386
2 0.1527551 2.794084 4.348707
3 1.1151157 0.154562 4.647605
4 0.5786497 1.407386 4.118078
5 0.9223104 2.995469 5.065981
$dog
a b c
1 0.04024872 1.6760609 5.013490
2 0.18095899 2.1015250 3.452313
3 -0.86588484 2.1371948 6.389203
4 -0.39499567 0.5996709 5.399724
5 -1.3185.0058084 5.530989
僞的是我想做的事情代碼:
my.fun <- function(b, c) {
out.put <- b + c
ls.1[i]$d <- out.put
}
我要輸出什麼看起來像:
> ls.1
$cat
a b c d
1 0.7031868 1.730499 4.286386 6.689551
2 0.1527551 2.794084 4.348707 5.553838
3 1.1151157 0.154562 4.647605 8.526398
4 0.5786497 1.407386 4.118078 5.999395
5 0.9223104 2.995469 5.065981 8.536797
$dog
a b c d
1 0.04024872 1.6760609 5.013490 6.689551
2 0.18095899 2.1015250 3.452313 5.553838
3 -0.86588484 2.1371948 6.389203 8.526398
4 -0.39499567 0.5996709 5.399724 5.999395
5 -1.3185.0058084 5.530989 8.536797
我認爲它應該是與mapply或類似的東西很容易實現,但我我不出來....
一種替代的解決方案是正確所示的預期輸出?無法弄清列表中具有不同值的列「b」和「c」如何在列表中給出相同的「d」。 –
@RonakShah,我的錯誤,$ dog $ d不正確,d應該等於b + c。 – flee