我正在尝试在R
中创建(矢量)对象。因此,我希望实现我没有指定先验对象的名称。例如,如果我有一个长度为3的列表,我想创建对象p1
到p3
,如果我有一个长度为10的列表,则对象p1
到{{1}必须创建。长度应该是任意的,而不是先验确定。
感谢您的帮助!
答案 0 :(得分:2)
我想这样做的正确方法是考虑列表p = list()
,然后您可以使用p[[i]]
尽可能大的i
,而无需指定任何长度。
然后,当您的列表填满后,您可以重命名:names(p) = paste0("p",c(1:length(p)))
最后,如果您希望直接访问所有pi
个变量,请添加attach(p)
答案 1 :(得分:1)
这是一种黑客,但你可以做以下
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 如果你只想将它用于glm,你可能想要在 R 中学习formula
。
glm(y~., data=your_data)
将数据框中未命名为 y 的所有列作为回归量。也许这有帮助。
答案 2 :(得分:0)
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。