【发布时间】:2018-07-17 03:23:26
【问题描述】:
在做一些更复杂的事情的过程中,我发现了以下内容: 如果我使用 do.call 将数值向量转换为列表,我会得到与应用函数不同的值,我不知道为什么。
x <- rnorm(30)
median(x) # -0.01192347
# does not match:
do.call("median",as.list(x)) # -1.912244
为什么?
注意:我正在尝试使用函数名称向量运行各种函数。这适用于 do.call,但前提是我从 do.call 获得正确的输出。
感谢您的任何建议。
【问题讨论】:
-
我相信有人会解释为什么,但
do.call(median,list(x = x))会返回您期望的值。 -
啊,当然,
as.list正在将向量拆分为单个元素的列表,因此do.call()只是抓取第一个元素传递给median。 -
谢谢!这有效并解释了问题所在。