我正在嘗試在R
中創建(矢量)對象。因此,我想實現,我沒有先指定對象的名稱。例如,如果我有一個長度爲3的列表,我想創建對象p1
到p3
,如果我有一個長度爲10的列表,則必須創建對象p1
到p10
。長度應該是任意的,而不是先驗確定的。如何使用「未知名稱」在R中創建對象?
感謝您的幫助!
我正在嘗試在R
中創建(矢量)對象。因此,我想實現,我沒有先指定對象的名稱。例如,如果我有一個長度爲3的列表,我想創建對象p1
到p3
,如果我有一個長度爲10的列表,則必須創建對象p1
到p10
。長度應該是任意的,而不是先驗確定的。如何使用「未知名稱」在R中創建對象?
感謝您的幫助!
我想這樣做的正確方法是考慮列表p = list()
,然後您可以使用p[[i]]
與i
一樣大,只要您希望沒有指定任何長度。
然後,一旦你的列表被填滿,你可以將其重命名:最後names(p) = paste0("p",c(1:length(p)))
,如果你想獲得直接訪問所有的pi
變量,你加attach(p)
這是怎樣的一個黑客,但你可以做以下
short_list <- list(rnorm(10),rnorm(20),1:3)
long_list <- c(short_list,short_list)
paste0("p",seq_along(short_list))
mapply(assign, paste0("p",seq_along(short_list)), short_list, MoreArgs = list(envir = .GlobalEnv))
結果:
> p3
[1] 1 2 3
你可以這樣做long_list
我沒有看到一個統計模型,你將需要這個。更好地開始使用列表像short_list
或data.frame的直接。
PS如果你只是想用它,你可能想在[R學習formula
的GLM。
glm(y~., data=your_data)
將數據框中未命名爲和的所有列作爲迴歸因子。也許這有幫助。
感謝評論'glm'。 'data.frame'的技巧幫助了很多! – tnaake 2015-02-11 10:13:22
assign
(也可能是attach
)通常表示您尚未達到「Rish」版本的代碼。考慮到你需要建模:如果你的$ p_1 \ cdot p_n $屬於同一類型,你可以把它們放到一個矩陣中(在data.frame
的列中;對於建模它們總是需要是相同的長):
df$matrix <- p.matrix
如果直接創建data.frame
,你需要確保基質不會擴展到data.frame列:
df <- data.frame (matrix = I (matrix), ...)
然後glm (y ~ matrix, ...)
會工作。
有關此技術的示例,請參閱包pls
或hyperSpec
或pls
paper in the Journal of Statistical Software。
是的,我也在想這個,但是我希望在後面的分析中使用變量作爲'glm'函數中的預測變量,這使得它有點困難。我需要這個逐步建模模型。 – tnaake 2015-02-11 09:50:34
如果所有向量的長度都等於'l',爲什麼不使用矩陣:'mat = matrix(nrow = l)',然後用'cbind'填充它。最後,使用'as.data.frame',每列將有一個名稱'Vi' – clemlaflemme 2015-02-11 09:59:29