我想对一个向量应用一个函数。然而,该函数需要一系列参数。因此,我需要将向量“拆分”为不相关的参数。
假设我有一个名为dta的数据框。我想在其中的一列上运行一个函数,比如说平均值(mean)。
以下是问题所在:
假设我有一个名为dta的数据框。我想在其中的一列上运行一个函数,比如说平均值(mean)。
以下是问题所在:
call("mean", dta$DV)
返回值
mean(c(0.371, -0.860, etc... ))
这一列是向量的事实与 mean 函数不兼容,因为该函数期望一个单独的参数序列,而不是一个组合。
如果将 "mean" 替换为包含字符串的变量,则解决方案应该有效,例如:
fun <- "mean"
call( fun, dta$DV)
mean
,因为它实际上只需要一个向量,而不是一系列参数。对于mean
,我会使用do.call("mean", list(dta$DV))
。但是如果你有一个相反的函数(需要单个参数),你可以使用do.call("otherfunc", as.list(dta$DV))
。这是你的意思吗? - r2evans?call
,它的说明是“'call'返回一个未求值的函数调用”,其中“未求值”是重点。您可以使用eval(call(...))
(它会返回平均值),但是您也可以像我之前评论中所示那样使用do.call(...)
。 - r2evans