我目前有19个excel文件,其中11个中有7列,另外8个中有9列。两个文件基本上都有一些确切的数据,但最后9个文件只有一些我不需要的额外数据。我的最终目标是拔出我需要操作的4列,并将它们全部作为一个data.frame,以便我可以在以后执行交叉表。
我已成功使用以下代码导入单个文件来处理格式问题:
import <- read.csv(file = "myfile.csv", head = TRUE, sep = "|", stringAsFactors = FALSE)
我试图用一种简洁的方式一次性导入这些数据。我找到了这个SO Question,并尝试使用提供的代码,因为有大量的建议,但是我只有一个选项来实际为我工作而不会产生错误或警告。
temp = list.files(pattern="*.csv")
for (i in 1:length(temp)) assign(temp[i], read.csv(temp[i], head = TRUE,
sep = "|", stringAsFactors = FALSE))
我现在的问题是,我要导入的文件正在全局环境中显示。它们显示为data.frame类型,具有各自内容的准确长度,大小和值。但我不能打电话给他们。在这个问题的评论中,有人问过这个,但我没有看到任何答复来补救它。虽然显示了文件名(原始的excel文档名称),但这些名称包含空格,如果我尝试根据文件名调用它们,R不喜欢它,也不会这样做。
作为替代导入方法,我还尝试了以下我认为开始工作的方法:
# Get the files names
files = list.files(pattern="*.csv")
# First apply read.csv, then rbind
myfiles = do.call(rbind, lapply(files, function(x) read.csv(x, head = TRUE,
sep = "|", stringsAsFactors = FALSE)))
但是因为前11个文件有7列而其余的有9个,所以我收到了错误信息
Error in rbind(deparse.level, ...) :
numbers of columns of arguments do not match
将文件分成不同的目录可能会对此有所帮助,但是当我提供给其他人使用时,看到为他们提供代码会更专业。
最终:我要么知道如何访问这些数据,要么有其他方法可以做到这一点,我将非常感激!