【发布时间】:2019-02-11 03:47:47
【问题描述】:
我想将函数应用于向量。但是,该函数需要一系列参数。因此,我需要将向量“拆分”为不相关的参数。
假设我有一个名为 dta 的数据框。我想运行一个函数,比如 mean 在它的一个列上,比如 DV。
下面显示问题
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))。是这个意思吗? -
好的,所以我可能没有理解这个问题。不过,为什么上面的调用没有返回一个数字?
-
如果您阅读
?call,它会说 "'call' 返回未评估的函数调用",其中“未评估”是关键。你可以做eval(call(...))(返回平均值),但你也可以像我之前的评论一样做do.call(...)。 -
@r2evans:如果您将评论放入答案中,我将对其进行验证。感谢您的反馈。
标签: r