我是R的新手,正在玩耍。
我询问目录并将目录中的文件列表返回给名为files
的变量。然后我想依次打开每个文件。看起来当我打印文件名时它打开每个文件两次,当我只想要一次。我的问题是如何将每个文件读入变量met
一次? - 一旦读入文件,我将最终使用它进行其他操作。
请参阅下面的代码:
strPathToDirectory <- "C:/Users/Stacey/Documents/R/Proj/RawDatabase/"
files <- list.files(strPathToDirectory)
length (files)
for(val in 1:length(files)){
met <- openxlsx::read.xlsx(paste0(strPathToDirectory,files[val]),colNames=FALSE)
print(files[val])
}
下面是我得到的控制台输出:
[1] "2016_Q3.xlsx"
[1] "2016_Q3.xlsx"
[1] "2016_Q4.xlsx"
[1] "2016_Q4.xlsx"
正如您所看到的那样,每个文件都会被查询两次。
答案 0 :(得分:1)
不确定为什么会这样。生成虚拟文件后,此示例代码基本相同,输出仅显示每个文件一次:
tmpdir <- tempdir()
for(i in 1:5){
data <- data.frame(matrix(rnorm(10), nrow = 5))
write.xlsx(data, file = paste(tmpdir, sprintf("file%s.xlsx", i), sep = "/"))
}
files <- list.files(tmpdir, pattern = 'xlsx')
length(files)
for(val in 1:length(files)){
met <- openxlsx::read.xlsx(paste(tmpdir, files[val], sep = "/"))
print(files[val])
}
输出:
[1] "file1.xlsx"
[1] "file2.xlsx"
[1] "file3.xlsx"
[1] "file4.xlsx"
[1] "file5.xlsx"
答案 1 :(得分:0)
我无法重现您的问题 - 您是否尝试重新运行代码,以防您更改了某些内容?
如果unique()
函数仍然列出每个文件两次,您只需使用for
函数,过滤掉双重条目,然后重新运行TextIO.Read.from(filePattern)
循环。
答案 2 :(得分:0)
据悉,有时视觉工作室需要重启 - 不确定原因 - 但它解决了问题。感谢所有回复的人,非常感谢