使用矢量名称自动创建多个数据框或矢量

Create multiple dataframes or vectors by automation with vector names

简单地说,在这个例子中,我有一个有3个方向的向量:

向量 <- c("South", "North", "East")

我需要为每个方向创建一个新向量,并在每个方向后命名 3 个新向量。所以我希望下面的逻辑起作用:

for(i in 1:length(向量){ data.vector[i] <- c(1:3)

它会创建 3 个向量(data.South、data.North 和 data.East),所有 3 个都等于 (1,2,3)。

不幸的是,这不起作用,因为矢量引用 vector[1] 被 R 读取为不存在的数据帧:

data.vector[1] <- "Position" 中的错误:找不到对象 'data.vector'

有没有一种方法可以对其进行编码并创建 3 个新向量?

非常感谢!

一种与您要求的方式非常相似的方法是 assign:

for(i in seq_along(vector)){
assign(vector[[i]],data.frame())
}
ls()
[1] "East"             "North"             "South"

另一种方法是创建一个列表对象,其中每个元素都是一个 data.frame,如下所示:

lapply(vector, function(x){setNames(data.frame(x),x)})
[[1]]
  South
1 South

[[2]]
  North
1 North

[[3]]
  East
1 East

如果您想创建名称在 vector 中的空数据框,一种方法是:

list_data <- setNames(replicate(length(vector), data.frame()), 
                      paste0('data.', vector))
list2env(list_data, .GlobalEnv)

但是,请考虑使用列表 (list_data),因为它们更易于管理并且不会污染全球环境。