Han*_* O. 3 variables get r 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(paste(substr(fileList, 3, 7),i, sep = ""))
}
Run Code Online (Sandbox Code Playgroud)
但是,这样做时出现以下错误:
Error in get(newName)$Species = c(paste(substr(fileList[a], 3, 7), i, :
could not find function "get<-"
Run Code Online (Sandbox Code Playgroud)
是否有另一种方式来表达列分配命令的短语,以便我可以解决此错误,还是解决方案更复杂?
如果将所有数据帧放入命名列表,则可以使用以下三种不同的方法:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
611 次 |
| 最近记录: |