【发布时间】:2019-06-02 03:46:33
【问题描述】:
我已经看到了很多答案,但是当我尝试它们时,我的数据框是空的 - “尝试将属性设置为 NULL”
setwd("*my path*")
library(ggplot2)
library(class)
set.seed(3060)
label<-11
index<-000
for(label in 11:37)
{
for(index in 000:419){
nameOfFile <- paste(label, index, "features.csv", sep = "_")
files <- list.files(path=getwd(), pattern=nameOfFile)
training <- do.call(rbind, lapply(files, read.csv, header=FALSE))
}
}
我所有的 csv 文件都是相同的格式 - 一行 22 列。
【问题讨论】:
-
如果没有可重现的示例,很难在这里给您提示。首先,尝试是否可以读取单个文件:
tmp <- read.csv(nameOfFile)。如果可行,那么您可以将它们存储在一个列表中,然后在循环外与 do.call 合并。 -
或者看看
rio包 -
您的脚本应该会找到名为
11_000_features等的文件,但如果它们有后缀(例如.csv),它不一定会找到它们。pattern参数应该是一个正则表达式,所以如果你的文件名有后缀,可能在你的paste语句中包含"\\.csv"或".*"。 -
感谢@AndrewGustar - 它不再为空,但现在只存储其中一个文件?
-
@user10739557 那是因为你在每次循环时都会覆盖
files。也许您希望files成为一个列表,并使用循环将结果附加到它?或者你可以完全忘记循环,只使用pattern="\\d+_\\d+_features\\.*"来捕获所有具有 XX_YY_features 模式的文件名。