2016-03-16 139 views
0

我試圖理解鏈序列和排序的(對我來說)意外行爲:R:鏈序列和排序產生意想不到的結果

> 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,因爲這是我想得到的,但是我不能通過將這些鏈接到函數來做到這一點。爲什麼?

回答

0

如果您嘗試將參數作爲向量傳遞給函數,則可以使用do.call()。它允許您執行函數名稱列表的參數。

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行動。換句話說,將創建一個序列,其長度等於向量中元素的數量。

相關問題