r - 如何最好地处理 R 中的未知对象名称
问题描述
我正在编写一个通用过程,但我不明白如何处理未知对象的名称。在这种情况下,我将所有 *.Rda 文件加载到目录中并执行 rbind 以创建数据框。Rda 文件的名称和数量可能会有所不同。我的问题是如何最好地处理这种情况?
library(data.table)
# Load all data frames in wd
my_files <- list.files(pattern='*.Rda',full.names = TRUE)
# Names of files without .Rda suffix
my_files_names <- gsub(".Rda$","",list.files(pattern='*.Rda'))
# load each data frame, creates objects with names in my_files_names
for(i in 1:length(my_files)){
load(my_files[i])
}
# make large data frame from all loaded data frames
combined_df <- rbindlist(my_files_names)
我收到错误
Input is character but should be a plain list of items to be stacked
combined_df <- rbindlist(as.list(my_files_names))
不起作用。
该示例将rbind
每个对象用作参数,但由于某种原因,字符向量不能用于引用在运行时名称未知的对象。我错过了什么?
解决方案
解决方案是两条线:
library(dplyr)
my_files <- list.files(pattern='*.rds',full.names = TRUE)
combined_df <- bind_rows(lapply(my_files, readRDS))
首先,对象的名称并不重要,因此我可以采用这种不同的方法。其次,.Rda
文件的使用造成了问题。此文件类型可以包含多个对象。尽管我的文件每个文件只有一个数据框,但 about 的代码不会load
作为lapply
. 我将我的文件转换为.rds
文件,每个文件只允许一个数据帧并且代码运行良好。
推荐阅读
- blazor-server-side - 如何在 blazor 中实现日志记录(服务器端 - 3.1)
- arrays - Python,face_recognition 将字符串转换为数组
- sql - 如何使用 Druid 编写窗口函数?
- numpy - 如何使用 xarray 使内存高效的多维 groupby/stack?
- html - 从不同的html获取用户输入并打印它
- javascript - React-redux,来自商店的值被重置
- powershell - Powershell - 将数组导出到不同列中的 CSV
- r - 在 R 闪亮中使用 lubridate 设置日期格式
- android - 调用 notifyItemRemoved() 后项目闪烁
- python - 使用 Beautiful Soup 访问 javascript 文本