在R中创建新列时,通过变量名引用数据帧
我有一系列的十个数据帧,包含两列x和y。我想在每个数据框中添加一个新列,其中包含数据框的名称。我遇到的问题是如何使用变量引用数据帧,以便迭代执行此任务。除了通过变量名引用它之外,我还尝试了get(),如下所示:在R中创建新列时,通过变量名引用数据帧,r,variables,get,dataframe,R,Variables,Get,Dataframe,我有一系列的十个数据帧,包含两列x和y。我想在每个数据框中添加一个新列,其中包含数据框的名称。我遇到的问题是如何使用变量引用数据帧,以便迭代执行此任务。除了通过变量名引用它之外,我还尝试了get(),如下所示: for(i in 1:10){ name <- paste(substr(fileList, 3, 7),i, sep = "") assign(newName, as.data.frame(get(name))) get(newName)$Species = c
for(i in 1:10){
name <- paste(substr(fileList, 3, 7),i, sep = "")
assign(newName, as.data.frame(get(name)))
get(newName)$Species = c(paste(substr(fileList, 3, 7),i, sep = ""))
}
for(1:10中的i){
name如果将所有数据帧放入命名列表,则有三种不同的选项:
df_list <- list(a = data.frame(x = 1:5),
b = data.frame(x = 1:5))
#Option 1
for (i in seq_along(df_list)){
df_list[[i]][,'Species'] <- names(df_list)[i]
}
#Option 2
tmp <- do.call(rbind,df_list)
tmp$Species <- rep(names(df_list),times = sapply(df_list,nrow))
split(tmp,tmp$Species)
#Option 3
mapply(function(x,y) {x$Species <- y; x},df_list,names(df_list),SIMPLIFY = FALSE)
df_list如果您将所有数据帧放在一个命名列表中,这将非常容易。
df_list <- list(a = data.frame(x = 1:5),
b = data.frame(x = 1:5))
#Option 1
for (i in seq_along(df_list)){
df_list[[i]][,'Species'] <- names(df_list)[i]
}
#Option 2
tmp <- do.call(rbind,df_list)
tmp$Species <- rep(names(df_list),times = sapply(df_list,nrow))
split(tmp,tmp$Species)
#Option 3
mapply(function(x,y) {x$Species <- y; x},df_list,names(df_list),SIMPLIFY = FALSE)