我写了一个R代码来处理文件夹中的文件,我需要一些帮助才能使用文件名作为数据框的名称。
运行以下R代码时没有错误消息。我希望每个循环都能创建它的数据框;其数据框的名称由其文件名命名。
请帮助我让它发挥作用。
这是我的R代码:
files <- list.files(path="/Users/me/Desktop/mydatefolder20151217", pattern=".TXT")
for (fname in files) {
fname <- read.table(fname)
if (ncol(fname) == 11) {
fname<-subset(fname, select=-c(V7))
}
colnames(fname) <- c("ID","yy","mm","dd","HH","MM","Temp","Rh","Vs","Vf")
fname$Temp[fname$Temp < -50 | fname$Temp > 50] <- NA
fname$DateTime <- as.POSIXct(paste(fname$yy, fname$mm, fname$dd, fname$HH, fname$MM), format = "%y %m %d %H %M")
}
答案 0 :(得分:2)
您可以通过将数据框转换保存到之后可以访问的列表来清理代码。我无法测试这是否有效;您没有在示例中提供任何实际数据。 :
files <- list.files(path="/Users/me/Desktop/mydatefolder20151217", pattern=".TXT")
all_dfs <- vector("list", length(files))
for (i in 1:length(files)) {
df <- read.table(files[i])
if (ncol(df) == 11) {
df <- subset(df, select=-c(V7))
}
colnames(df) <- c("ID","yy","mm","dd","HH","MM","Temp","Rh","Vs","Vf")
df$Temp[df$Temp < -50 | df$Temp > 50] <- NA
df$DateTime <- with(df, as.POSIXct(paste(yy, mm, dd, HH, MM), format = "%y %m %d %H %M"))
all_dfs[[i]] <- df
names(all_dfs)[i] <- paste0("df", i)
}
答案 1 :(得分:0)
将full.names=TRUE
添加到list.files
来电。
另请注意,pattern
应该是正则表达式,而不是shell通配符表达式。如果您想要所有扩展名为.txt
的文件,请使用pattern="\\.TXT$"
。由于您看起来像是在Windows上,因此请添加ignore.case=TRUE
作为衡量标准。