【问题标题】:Error R csv: Error in read.table(file = file, header = header, sep = sep, quote = quote, : 'file' must be a character string or connection错误 R csv:read.table 中的错误(file = file,header = header,sep = sep,quote = quote,:'file' 必须是字符串或连接
【发布时间】:2016-11-27 16:33:27
【问题描述】:

我正在为 MiRLAB 包的 R 教程苦苦挣扎,尽管我不确定问题是否与包的功能有关。

我想使用函数Pearson(),它只接受.csv 文件。我已经完美地加载了一个文件,但是当我尝试了函数Pearson()(MI、IDA 和 Lasso 也是如此)时,出现了以下错误消息:

read.table 中的错误(文件 = 文件,标题 = 标题,sep = sep,quote = quote, : 'file' 必须是字符串或连接

dataset=read.csv("ArabPrueba1.csv", sep = ";")
cause= 3:23
effect= 24:44
pearson=Pearson(dataset,cause,effect)

关于如何更改文件或命令行以使其被函数识别的任何想法?可能是 csv 文件或其他问题?在本教程的示例中,文件是直接从包中获取的,因此不涉及这种方法。

提前谢谢你

【问题讨论】:

  • 我认为你应该使用:pearson=Pearson("ArabPrueba1.csv",cause,effect)
  • 当我这样做时,出现的错误是:read.table 中的错误(file = file,header = header,sep = sep,quote = quote,:比列名更多的列
  • 尝试使用逗号分隔而不是分号
  • 你的 csv 文件有标题吗?
  • “read.csv”与分号一起工作得很好,但在函数中使用它时却以某种方式失败。我也试过pearson = Pearson(read.csv("ArabPrueba1.csv", sep = ";"), cause, effect),但是我得到的错误是Error in read.table(file = file, header = header, sep = sep, quote = quote, : 'file' must be a character string or connection

标签: r csv


【解决方案1】:

我终于解决了这个问题,即使它看起来不是一个干净的解决方案,它也有效。我想问题是当我把它们带到控制台时,一些额外的“”被添加到原始文件中,所以我重写了文件并将最近创建的文件重新添加到控制台。

RNA <- read.table("RNA.csv", dec = ",", sep = ";", stringsAsFactors = FALSE, header = TRUE, blank.lines.skip = TRUE)
tRNA <- t(RNA)
write.table(tRNA, file = "tRNA_2.csv", quote = FALSE, dec = ".", sep = ",", qmethod = "escape")
tRNAt <- read.csv("tRNA_2.csv")

miRNA <- read.table("miRNA.csv", dec = ",", sep = ";", stringsAsFactors = FALSE, header = TRUE, blank.lines.skip = TRUE)
tmiRNA <- t(miRNA)
write.table(tmiRNA, file = "tmiRNAt.csv", quote = FALSE, dec = ".", sep = ",", qmethod = "escape")
tmiRNAt <- read.csv("tmiRNAt.csv")

dataset <- cbind2(x=tmiRNAt, y = tRNAt)
write.table(dataset, file = "dataset_2.csv", quote = FALSE, dec = ".", sep = ",", qmethod = "escape")

# MiRLAB:
library(miRLAB)
cause = 1:278
effect = 279:length(dataset)
ps = Pearson("dataset_2.csv", cause = cause, effect = effect)

我知道写和读这么多次不是一个好主意,但它实际上是它工作得更好的方式(完全有效)。

感谢您的帮助!

【讨论】:

    【解决方案2】:

    这是一个例子:

    # working:
    # create csv file with "," seprator
    write.table(x = mtcars, file = "data.csv", sep = ",", row.names = F)
    Pearson(datacsv = "data.csv", cause = 2:3, effect = 3:4)
    
    #           cyl      disp
    #disp 0.9020329 1.0000000
    #hp   0.8324475 0.7909486
    
    
    # not work:
    # create csv file with ";" seprator
    write.table(x = mtcars, file = "data1.csv", sep = " ; ", row.names = F, col.names = F)
    Pearson(datacsv = "data1.csv", cause = 2:3, effect = 3:4)
    

    内部 read.csv 使用默认分隔符“,” 只需更改您的文件并用逗号替换所有分号

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多