循环遍历全球低谷

时间:2019-11-20 13:12:29

标签: r iteration

我想遍历全局环境(仅数据框),并向.GlobalEnv中的每个数据框添加一列。此外,此列的条目依赖于列表index

因此,我想为dataframe1获取一个新列,其条目为index[1]。对于dataframe2,我想要一个带有条目index[2]的列,依此类推。 另外,应该直接对.GlobalEnv中的对象进行更改,因为数据帧包含NA,因此我将无法使用list2env(dfs, .GlobalEnv)导出它们。

我的尝试:

index = c(a, b, c, d)
dfs = lapply(filenames, get) # dfs is a list of all the dataframes in the .GlobalEnv

for (i in index){
dfs = lapply(dfs, transform, Index = index[i])
}

list2env(dfs, envir = .GlobalEnv)

循环运行了,但是在dfs中没有任何改变,我也不知道为什么。 对于list2env,我收到错误消息:

"Error in list2env(dfs, envir = .GlobalEnv) : 
  names(x) must be a character vector of the same length as x"

因为数据帧中有NA's

是否存在一种更直接的方法来直接更改.GlobalEnv中的数据框,以及如何正确地遍历一个数据框列表,并且每个条目都会更改一个条目(基于index列表)?

我检查了有关.GlobalEnv中的迭代的问题,但似乎不是真的使该条目依赖于遍历另一个列表。

预先感谢您:)

更改:


对不起,我的描述不好。我有一个名为dfs的数据框列表。 该列表包含n = 78个单独的数据帧。然后,我有了第二个列表index,其中包含n = 78个“字符”条目。 我的意图是获取dfs的第一个元素dataframe1,并向其中添加一列,其中输入index的第一个元素称为a。对于dataframe2中的第二个数据帧dfs,我想添加一列,其中包含index的第二个元素,称为b,依此类推。

这样做之后,我想将更新后的dfs的单独数据帧导出到.GlobalEnv。但是由于dfs中单独的数据帧包含NA's,因此无法与list2env(dfs, .GlobalEnv)一起使用。

1 个答案:

答案 0 :(得分:0)

我还没有完全理解这个问题,但是我认为这很接近。

首先,创建一些数据,因为问题中没有任何内容。

Class.forName()

现在,更改上面的数据框(请注意,只有3个df)并分配回全局环境。

a <- 1
b <- 2
c <- 3
d <- 4
z <- 5

index <- c(a, b, c, d, z)

df1 <- iris
mt <- mtcars
diamonds <- as.data.frame(ggplot2::diamonds)