0

我正在尝试从一个文件夹中读取多个文件并将它们组合成一个大数据框。我希望新的数据框有一个列来标识它来自哪个文件,在我的例子中,年份是文件名的一部分。

require(data.table)

filelist <- list.files(path="mywd")

df <- data.frame()

for (i in 1:length(filelist)){

      tempdata <-fread(filelist[i], stringASFactors = FALSE, colClasses = list(character = 13))

      setattr(tempdata,'YEAR', c(i+2002))

      df <- rbindlist(list(df, tempdata), use.names = T, idcol = "YEAR")
}

我收到多个错误说:

将 input= 作为系统命令(“文件名”),并且在传递给input=. 请使用fread(cmd=...)。如果您正在创建应用程序,则存在安全问题,该应用程序可能会给恶意用户,并且该应用程序未在安全环境中运行;例如,应用程序以 root 身份运行。请阅读 v1.11.6 的 NEWS 文件中的第 5 项以获取更多信息以及禁止显示此消息的选项。

我不知道在哪里寻找 NEWS 并且无法使用 cmd 选项。文件名类似于“YYYY 一二三与四.dsv”。 预先感谢您的帮助!:)

更新我现在玩了一下fread()的 cmd 选项。我还没有设法解决我的问题,但也许我正朝着好的方向发展。

试图适应带空格的文件名“YYYY一二三和四.dsv”

require(data.table)

filelist <- list.files(path="mywd")

df <- data.frame()

for (i in 1:length(filelist)){

      tempdata <-fread(sprintf('%4d one two three with four.dsv', i+2002), stringASFactors = FALSE, colClasses = list(character = 13))

      setattr(tempdata,'YEAR', c(i+2002))

      df <- rbindlist(list(df, tempdata), use.names = T, idcol = "YEAR")
}

这给出了每年的新错误:

'2003' 不是内部或外部命令、可运行程序或批处理文件。

警告()说执行失败,错误代码为 1。

4

0 回答 0