如何使用 "unknown name" 在 R 中创建对象?

How to create objects in R with "unknown name"?

我正在尝试在 R 中创建(矢量)对象。因此,我想实现不指定 a priori 对象名称。例如,如果我有一个长度为 3 的列表,我想创建对象 p1p3,如果我有一个长度为 10 的列表,则对象 p1p10 必须创建。长度应该是任意的,而不是 a priori 确定的。

感谢您的帮助!

我想这样做的正确方法是考虑一个列表 p = list(),然后您可以使用 p[[i]]i 任意大,而无需指定任何长度。

然后,当您的列表填满后,您可以重命名它:names(p) = paste0("p",c(1:length(p)))

最后,如果你想直接访问所有 pi 变量,你添加 attach(p)

这是一种 hack,但您可以执行以下操作

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

做同样的事情

我没有看到您需要的统计模型。最好直接使用 lists,例如 short_listdata.frame

PS 如果你只是想将它用于 glm 你可能想学习 formulaR.
glm(y~., data=your_data) 将数据框中所有未命名为 y 的列作为回归量。也许这有帮助。

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, ...) 就可以了。

有关此技术的示例,请参见例如包 plshyperSpecpls paper in the Journal of Statistical Software.