R apply 函数 - 使用哪一个?

R apply function - which one to use?

我很困惑在这里使用哪个应用程序家庭。 我有一个数据框 mydf as

terms
A
B
C

我想对每个值应用自定义函数并在如下新列中获得结果

terms Value1 Value2 ResultChar
A     23     45     Good
B     12     34     Average
C     9      23     Poor

自定义函数类似于 myfunc("A") returns 向量类似于 (23, 45, Good)

任何帮助将不胜感激。

您似乎需要一个数据框输出,因为您在各列中有不同的数据类型。所以你需要定义你的 myfunc 到 return 数据框。

考虑这个玩具示例:

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

或者您可以使用 plyr 包中的 adply

library(plyr)
adply(mydf, 1, myfunc)
#  terms terms.1 two
#1     a       a  aa
#2     b       b  bb
#3     c       c  cc

(>_<) 这是我第一次为数据框尝试 R base 以外的东西;不确定为什么 adply returns 不需要的列名在这里...

我们可以使用 rbindlistlapply。这样会更有效率

 library(data.table)
 rbindlist(lapply(mydf$terms, myfunc))

如果需要,我可以展示基准。但是,它们已经显示 here