如何基于循环创建一组数据帧?

时间:2019-07-26 09:23:24

标签: r dataframe for-loop

我需要创建相同df的副本,其数量与更改矢量中存储的值的那些数据帧的名称相同。 例如:

z <- c("A-1", "B-2", "C-2", ...)

for (i in z) {
   i <- already_existing_df
  }

手动硬编码类似于:

`A-1` <- df
`B-2` <- df
# ...and so on

我当然想自动化它,而不是对其进行硬编码...也因为它每月都会更改,所以我们谈论的是许多dfs ...

现在,我知道要将i作为变量名进行传递,您只需执行以下操作:

df[i]

但是我不知道如何将i作为df的名称来传递。

在此先感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

另一种方法可能是使用replicate重复数据帧length(z)次,并将名称分配给列表

z <- c("A-1", "B-2", "C-2")
list_df <- setNames(replicate(length(z), df, simplify = FALSE), z)

然后可以按原样保留数据框列表,或将其作为单独的数据框。

list2env(list_df, .GlobalEnv)

答案 1 :(得分:2)

根据您想要的结果,您可以定义一个列表(或环境):

z <- vector("list", 3)

for (i in seq_along(z)) {
  z[[i]] <- already_existing_df
}

names(z) <- c("A-1", "B-2", "C-2")

答案 2 :(得分:1)

您可以执行assign(df, z),这将在df的{​​{1}}元素下为您的环境分配i

相关问题