舉例來說,如果我有一個多維列表對象,比如說,「X」在R中,爲什麼使用do.call更改結果?
x <- list(); x[[1]] <- c(1,2,3); x[[2]] <- c(2,3,4);
x[[3]] <- c(3,4,5); x[[4]] <- c(4,5,6)
a <- combn(x,3)
如果我想每一行的第一列合併成一個單一的載體,這不給我我想要的:
c(a[1:3,1]).
它返回一個列表,每個元素包含原始列表的一個元素。取而代之的是,這個工程:
do.call(c,a[1:3,1])
按照幫助說明,所有do.call確實是執行函數,那麼,爲什麼結果不同?
你確定[1:3,1] = a [1:3]?我嘗試了[1:3,2],這是不同的。 – Bob
是的,這只是你在這種情況下定義'a'的一個神器,這對解決方案沒有多大意義,所以你不會想知道爲什麼我在後面保存了三個句子。當你返回一個列表時,很容易看到它是如何工作的,即'a < - combn(x,3,simplify = FALSE) – shayaa