如何使用 "unknown name" 在 R 中创建对象?
How to create objects in R with "unknown name"?
我正在尝试在 R
中创建(矢量)对象。因此,我想实现不指定 a priori 对象名称。例如,如果我有一个长度为 3 的列表,我想创建对象 p1
到 p3
,如果我有一个长度为 10 的列表,则对象 p1
到 p10
必须创建。长度应该是任意的,而不是 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_list
或 data.frame。
PS 如果你只是想将它用于 glm 你可能想学习 formula
在 R.
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, ...)
就可以了。
有关此技术的示例,请参见例如包 pls
或 hyperSpec
或 pls
paper in the Journal of Statistical Software.
我正在尝试在 R
中创建(矢量)对象。因此,我想实现不指定 a priori 对象名称。例如,如果我有一个长度为 3 的列表,我想创建对象 p1
到 p3
,如果我有一个长度为 10 的列表,则对象 p1
到 p10
必须创建。长度应该是任意的,而不是 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_list
或 data.frame。
PS 如果你只是想将它用于 glm 你可能想学习 formula
在 R.
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, ...)
就可以了。
有关此技术的示例,请参见例如包 pls
或 hyperSpec
或 pls
paper in the Journal of Statistical Software.