2017-02-24 89 views
0

我想知道是否有一種簡單的方法來使用「for」循環產生具有順序名稱的矩陣列表,然後給出它們的列值之一。將值分配給循環中的矩陣的一列

for(i in 1:3) 
{ 
    assign(paste0("matrix",i), matrix(NA, nrow = 4, ncol = 6)) 
    assign(get(paste0("matrix",i))[,1], rep(i, 4)) 
} 

在上面的代碼中,我試圖創建3點矩陣矩陣1,矩陣,和matrix3,其第一柱旨在分配代表的值(1,4),代表(2,4),代表(3,4)。但是,R給出了一條錯誤消息。

Error in assign(get(paste0("matrix", i))[, 1], rep(i, 4)) : 
    invalid first argument 

感謝您的幫助。

回答

0

如果您的目標是製作矩陣列表,我會推薦使用list。將它們放在一個真實的list中,而不是在主env中,因爲類似命名的對象會產生更多的內聚,並使代碼更易於理解。

matrix_list = lapply(1:3, function(x) matrix(NA, nrow = 4, ncol = 6)) 
names(matrix_list) = paste('matrix', 1:3) 

您所看到的錯誤可能是因爲assign需要character作爲輸入。仔細閱讀assignget的文檔(並且不要再使用它們;))。

+0

謝謝。實際上,我的代碼可以生成3個矩陣,就像你的代碼一樣(我在1:3中){assign(paste0(「matrix」,i),matrix(NA,nrow = 4,ncol = 6)}}我的問題是,有沒有辦法在每個循環中爲變量名分配列值。再次感謝。 – lightsnail

+0

另外,我讀了'assign'文檔,我的代碼'assign(get(paste0(「matrix」,i))[,1],rep(i,4))'應該是錯誤的。謝謝。 – lightsnail