我已经看到了其他一些帖子,他们建议将数据帧加载到列表中,但是他们从未解释过什么是可接受的方式来命名动态生成的数据帧.
我已经提出了下面的代码,我想知道这是否是一个好方法,或者我将来会遇到问题?
谢谢,
#create the data frames from all csv files into a list
dfs <- lapply(list.files(pattern="*.csv"),read.csv)
#Give them the correct names
names(dfs) <- regmatches(list.files(pattern="*.csv"),regexpr("^[[:alpha:]]+", list.files(pattern="*.csv")))
Run Code Online (Sandbox Code Playgroud)
另外,我可以命名它们并同时创建它们吗?我不想冒第二次调用时list.files以不同的顺序返回的风险,并且我在数据帧上添加了错误的名称.
该Map功能可以更好地自动命名元素.
dfs <- Map(read.csv, list.files(pattern="*.csv"))
Run Code Online (Sandbox Code Playgroud)
然后,您可以names()在生成后进一步编辑列表.或者,你可以保存文件名矢量,而不是调用list.files()多次,并使用setNames正确的走
#create the data frames from all csv files into a list
csvfiles <- list.files(pattern="*.csv")
dfs <- setNames(lapply(csvfiles, read.csv),
regmatches(csvfiles,regexpr("^[[:alpha:]]+", csvfiles))
)
Run Code Online (Sandbox Code Playgroud)