我試圖將部分變量與其名稱中的數字組合在一起。我有數百個與我在下面的例子中包含的名稱類似的變量,因此不想使用簡單的cbind
。將變量的部分與其名稱中的數字結合起來
的例子:
test.1 <- matrix(1:10, nrow = 5)
test.2 <- matrix(11:20, nrow = 5)
test.3 <- matrix(21:30, nrow = 5)
我可以輕鬆地使用do.call
的變量組合在一起,就像這樣:
test.combi_works <- do.call(cbind, lapply(paste0("test.", 1:3), get))
但我只需要每個矩陣的第一列。
第一次嘗試:
test.combi <- do.call(cbind, lapply(paste0("test.", 1:3, "[,1]"), get))
Error in FUN(c("test.1[,1]", "test.2[,1]", "test.3[,1]")[[1L]], ...) :
object 'test.1[,1]' not found
第二次嘗試:
test.combi2 <- do.call(cbind, lapply(noquote(paste0("test.", 1:3, "[,1]")), get))
Error in FUN(X[[1L]], ...) : object 'test.1[,1]' not found
我認爲這是與事實做get
作品與字符串。我不能簡單地將所有矩陣綁定在一起,然後刪除,因爲我實際上正在處理其他元素並不總是具有相同尺寸的列表。
當你'paste0'你不'subset',所以'GET'試圖達到目標test.1 [,1],它不存在。我會嘗試在l'apply函數後面使用子集,但我不熟悉'do.call'函數 – Llopis
爲什麼在工作區中有「數百個變量」?好的做法是在創建時將它們保存在列表中。 – Roland
@羅蘭感謝您的提示。我被迫這樣做,因爲我正在使用NbClust並且不需要所有的索引。因此,我必須爲每個索引創建一個對象。然後我需要一個總結矩陣,所以在這種情況下,一個列表不幸會幫助我。 –