我想遍历全局环境(仅数据框),并向.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)
一起使用。
答案 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)