Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件(文件“rt”中的错误:无效';说明';complete.cases程序中的参数_R - Fatal编程技术网

文件(文件“rt”中的错误:无效';说明';complete.cases程序中的参数

文件(文件“rt”中的错误:无效';说明';complete.cases程序中的参数,r,R,我正在编写一个R函数,它读取一个满是文件的目录,并报告每个数据文件中完全观察到的案例数。函数返回一个数据帧,其中第一列是文件名,第二列是完整案例数 比如, id nobs 1 108 2 345 ... etc 以下是我编写的函数: complete <- function(directory, id = 1:332) { for(i in 1:332) { path<-paste(directory,"/",id,".csv",sep="") mydat

我正在编写一个R函数,它读取一个满是文件的目录,并报告每个数据文件中完全观察到的案例数。函数返回一个数据帧,其中第一列是文件名,第二列是完整案例数

比如,

id nobs
1  108
2  345
...
etc
以下是我编写的函数:

complete <- function(directory, id = 1:332) {

  for(i in 1:332) {
    path<-paste(directory,"/",id,".csv",sep="")
    mydata<-read.csv(path)
    #nobs<-nrow(na.omit(mydata))
    nobs<-sum(complete.cases(mydata))
    i<-i+1
  }

  completedata<-c(id,nobs)
}
但我得到了一个错误:

Error in file(file, "rt") : invalid 'description' argument
我还尝试了
traceback()
函数来调试我的代码,它给出了以下输出:

traceback()
# 4: file(file, "rt") at #6
# 3: read.table(file = file, header = header, sep = sep, quote = quote, 
#    dec = dec, fill = fill, comment.char = comment.char, ...) at #6
# 2: read.csv(path) at #6
# 1: complete("specdata", id = 1:332)

如果没有一个完全可复制的示例,很难判断,但我怀疑您的问题在于这一行:

path<-paste(directory,"/",id,".csv",sep="")
path<-paste(directory,"/",id,".csv",sep="")

看看是否有效。

您的文件路径似乎有问题。 您正在将完整向量id=c(1:332)传递给文件路径名。 如果文件名为1.csv、2.csv、3.csv等…
您可以更改此行:

path<-paste(directory,"/",id,".csv",sep="")
path<-paste(directory,"/",id,".csv",sep="")

path您可以尝试
sapply
,而不是使用
for
读取数据。比如说


mydata我正在研究确切的问题。。目录“specdata”中的文件名以001.csv和002.csv命名。。。。099.csv一直到332.csv文件
但是,当您调用id=1时,您的文件名将变为1.csv,而该目录中不存在该文件名。
尝试使用此函数获取每个id文件的路径

filepaths <- function (id){
    allfiles = list.files(getwd())
    file.path(getwd(), allfiles[id])
}

filepath我遇到了这个问题,因为我试图对数据帧而不是向量运行for循环:

  ids <- th[th$nobs > threshold,]
  for(i in ids) {
应该是:

  ids <- th[th$nobs > threshold,]
  for(i in ids$id) {
ids阈值,]
用于(id$id中的i){

我在这句话中遇到了同样的问题:

Browse[2]> read.csv(list.files(".", "XCMS-annotated-diffreport--.*csv$"), row.names = 1)
Error in file(file, "rt") : invalid 'description' argument
然后,我发现在同一路径中有两个不同的csv文件,如下所示:

Browse[2]> list.files(".", "XCMS-annotated-diffreport--.*csv$")
[1] "XCMS-annotated-diffreport--1-vs-2-Y.csv" "XCMS-annotated-diffreport--1-vs-2.csv"  

当我删除一个文件时,它会再次工作。

将对象id更改为I-因为您在迭代对象I的for循环中
i、 谢谢Jonathan的快速回复。它解决了错误。谢谢Nathan帮助我解决了问题,让我明白我在哪里犯了错误。
Browse[2]> read.csv(list.files(".", "XCMS-annotated-diffreport--.*csv$"), row.names = 1)
Error in file(file, "rt") : invalid 'description' argument
Browse[2]> list.files(".", "XCMS-annotated-diffreport--.*csv$")
[1] "XCMS-annotated-diffreport--1-vs-2-Y.csv" "XCMS-annotated-diffreport--1-vs-2.csv"