1
我想從一個矩陣的每一行應用於expand.grid當基質可以具有可變數量的行
myMatrix <- matrix(c(1,2,3,4,5,6),2,3, byrow=T) # line 1
exp.myMatrix <- function(myMatrix) { # line 2
for (rownum in 1:nrow(myMatrix)) assign(paste("R",rownum, sep=""), myMatrix[rownum,]) # line 3
Combinations <- do.call(expand.grid, lapply(ls(pattern='^R\\d$'), get)) # line 4
rm(list=ls(pattern='^R\\d$')) # line 5
return(Combinations) # line 6
} # line 7
Combinations <- exp.myMatrix(myMatrix) # line 8
上面的代碼給出錯誤:「錯誤在FUN(X [[I]] ,...):找不到對象'R1'「。
但是,當我不使用該函數並只運行第1,3,4,5行時,我沒有得到任何錯誤。但是我需要通過函數傳遞myMatrix,因爲矩陣的行數是可變的。另請注意,我需要運行第5行,因爲我需要清除下一個矩陣的變量,該矩陣的行數可能比前一行少。
這個瘋狂的複雜的東西簡單....用'R'這種方式與分配/ get是編碼差,因爲它會導致與環境不受效力於傾倒變量全球envir ...必須避免! –