我很困惑,在这里使用家庭。
我有一个数据框mydf
为
terms
A
B
C
我想将自定义函数应用于每个值,并在新列中获取结果,如下所示
terms Value1 Value2 ResultChar
A 23 45 Good
B 12 34 Average
C 9 23 Poor
自定义函数类似myfunc("A")
返回类似(23, 45, Good)
任何帮助将不胜感激。
答案 0 :(得分:4)
看起来您需要数据框输出,因为跨列的数据类型不同。因此,您需要定义myfunc
以返回数据框。
考虑这个玩具示例:
mydf <- data.frame(terms = letters[1:3], stringsAsFactors = FALSE)
myfunc <- function (u) data.frame(terms = u, one = u, two = paste0(u,u))
以下是使用基本R功能的一种可能性:
do.call(rbind, lapply(mydf$terms, myfunc))
# terms one two
#1 a a aa
#2 b b bb
#3 c c cc
或者您可以使用adply
包中的plyr
:
library(plyr)
adply(mydf, 1, myfunc)
# terms terms.1 two
#1 a a aa
#2 b b bb
#3 c c cc
(&gt; _&lt;)这是我第一次尝试使用R base以外的数据帧;不确定为什么adply
在这里返回不需要的列名...
答案 1 :(得分:3)
我们可以将rbindlist
与lapply
一起使用。它会更有效率
library(data.table)
rbindlist(lapply(mydf$terms, myfunc))
如果需要,我可以显示基准。但是,它们已经显示here