R:链接seq和sort会产生意想不到的结果

时间:2016-03-16 12:39:35

标签: r sorting functional-programming seq

我试图理解(对我来说)链接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只是通过将这些链接到函数来做到这一点。为什么呢?

1 个答案:

答案 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。换句话说,将创建一个序列,其长度等于向量中元素的数量。