我试图理解(对我来说)链接seq和排序的意外行为:
> seq(sort(c(5,1)))
[1] 1 2
> sort(c(5,1))
[1] 1 5
> seq(1,5)
[1] 1 2 3 4 5
> seq(c(sort(c(5,1))))
[1] 1 2
我希望,第一行产生一个从1到5的序列,因为这是我想要得到的,但我不能让R只是通过将这些链接到函数来做到这一点。为什么呢?
答案 0 :(得分:0)
如果您尝试将参数作为向量传递给函数,则可以使用do.call()
。它允许您使用函数 name 和 list 执行函数调用。
do.call(seq, as.list(sort(c(5,1)))) # vector needs to be converted to a list
#[1] 1 2 3 4 5
您的示例返回[1] 1 2
,因为每当我们传递seq
长度为> 1
的向量时,它将充当seq_along
。换句话说,将创建一个序列,其长度等于向量中元素的数量。