我有這個data.frame
:如何傳遞列變量來應用函數?
id | amount1 | amount2 | day1 | day2
---------------------------------------------
A | 10 | 32 | 0 | 34
B | 54 | 44 | 8 | 43
C | 45 | 66 | 16 | 99
df <- data.frame(id=c('A','B','C'), amount1=c(10,54,45), amount2=c(32,44,66), day1=c(0,8,16), day2=c(34,43,99))
上,我想apply
功能
df$res <- apply(df, 1, myfunc)
其中
myfunc <- function(x,y) sum(x) * mean(y)
只有我想通過列變量作爲參數到功能,所以它基本上應該讀取
apply(df, 1, myfunc, c(amount1, amount2), c(day1, day2))
第一行,這是
myfunc(c(10,32),c(0,34))
# [1] 714
可以這樣做?
而不是'df [-1]',更喜歡'df [c(「amount1」,「amount2」,「day1」,「day2」)]]。 – flodel
爲什麼傳遞名稱更好?不容易維護解決方案...這裏更容易刪除一列.. – agstudy
@agstudy:嘗試在1)'df',2)'cbind(inserted =「hi」,df)上運行所有提供的解決方案,以及3)'cbind(df,append =「ho」)'。良好的代碼應該對輸入的任何這樣的改變是強健的。它需要使用列名而不是列索引。而相反,這樣更容易維護:如果插入或刪除列,則不需要增加/減少索引。 – flodel