【问题标题】:Error encountered when outputting data from a loop从循环输出数据时遇到错误
【发布时间】:2019-08-29 21:47:48
【问题描述】:

我有一个似乎大部分都可以工作的循环代码,但是当我尝试将结果输出到 csv 文件时,我收到以下错误,文件中的错误(文件,ifelse(追加,“a”,“w ")) : 无效的 'open' 参数。

我已经编写了一个循环代码(以前曾使用过),该循环从文件夹中获取数据集,执行计算并将这些计算放入新列中,然后将该数据集与新列一起输出到不同的文件夹中。但是,R 在尝试将输出放入循环结束时的新文件夹时遇到问题,给我以下错误,文件中的错误(文件,ifelse(追加,“a”,“w”)):无效“开放”的论点。

setwd("/Users/Desktop/Snail/CSVs/CSV 2")


files = list.files()

summary = NULL

for (f in files) {
  data = read.csv(f, sep = ',',header=T)
  data2<-prepData(data,type="UTM",coordNames=c("x","y"))
  sub = cbind(f,data2)
  summary = rbind(summary,sub)
  myfile = file.path("/Users/Desktop/CSV 3",".csv")
  write.table(summary[[f]], file=myfile , paste(names(summary)[f],".csv",sep=","))
}

我希望在新文件夹中获得一个包含新计算的文件。

【问题讨论】:

  • 你为什么要分配file=myfile,然后显然用paste(names(summary)...)分配另一个文件名?这将进入write.table 的第三个参数,即append= 寻找逻辑参数。
  • 我尝试将其重写为 write.table(summary[[f]], file="/Users/carlcloyed/Desktop/CSV 3",paste(names(summary)[f])," .csv" ,".csv",sep=",") 但是在 write.table(summary[[f]], file = "/Users/carlcloyed/Desktop/CSV 3", : 无效的 'quote' 规范中出现错误
  • 你错过了我的意思。您正在尝试将两个不同的文件名传递给函数!第二个文件名被传递到write.tableappend= 参数中,这会导致您的错误。试试write.table(summary[[f]], file=myfile)
  • 使用 myfile 我试图设置一个路径到我想要文件去的地方,然后尝试用 paste(names(summary)[f] 我在 write.table 中指定文件的名称重写 myfile = file.path("/Users/Desktop/CSV3",paste(names(summary)[f],".csv")) 现在在 match.names(clabs, names(xi)) 中得到错误:名称与以前的名字不匹配非常感谢您的帮助!
  • 计算机科学中最难的两件事:命名变量和缓存失效。我建议您使用myfile 作为目录 的名称是违反第一个目录的一个很好的例子。

标签: r


【解决方案1】:

您对write.table 的调用明确地将我认为应该是您的文件名的内容传递给append= 参数。试试这个:

for (f in files) {
  data = read.csv(f, sep = ',',header=T)
  data2<-prepData(data,type="UTM",coordNames=c("x","y"))
  sub = cbind(f,data2)
  summary = rbind(summary,sub)
  myfile = file.path("/Users/Desktop/CSV 3", paste(names(summary)[f],".csv",sep=","))
  write.table(summary[[f]], file=myfile)
}

【讨论】:

  • 哦,太好了,感谢您的时间和帮助!我继续这样做,但现在得到一个新的错误匹配.names(clabs,names(xi))中的错误:名称与以前的名称不匹配
  • 来自match.names 的新错误很可能与stackoverflow.com/q/12019461/3358272 重复
  • 拉娜,这能回答你的问题吗?如果没有,请提供更多上下文/详细信息。 (如果是,请接受:-)
猜你喜欢
  • 2021-05-15
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 2015-12-16
  • 2015-07-12
  • 1970-01-01
  • 2021-12-20
  • 2017-12-02
相关资源
最近更新 更多