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 不需要的列名在这里...
我们可以使用 rbindlist
和 lapply
。这样会更有效率
library(data.table)
rbindlist(lapply(mydf$terms, myfunc))
如果需要,我可以展示基准。但是,它们已经显示 here
我很困惑在这里使用哪个应用程序家庭。
我有一个数据框 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 不需要的列名在这里...
我们可以使用 rbindlist
和 lapply
。这样会更有效率
library(data.table)
rbindlist(lapply(mydf$terms, myfunc))
如果需要,我可以展示基准。但是,它们已经显示 here