【问题标题】:Rstudio Automatically use input file name in read.csv when using write.csv & two headersRstudio在使用write.csv和两个标题时自动在read.csv中使用输入文件名
【发布时间】:2018-07-28 08:23:12
【问题描述】:

目前我使用脚本来编辑数据集的列。 我在Rmarkdown上点击运行,我的第一行代码是

Data <- read.csv(file.choose(), sep = "," ,header = T , skip = 2)

这会跳过前两行,并为第三行提供我在单击运行后选择的文件的标题。脚本完成后,最后一行代码是

write.csv(Data, "FileName.csv", row.names=FALSE)

这将删除左侧给出数值的所有行名,并将 FileName.csv 保存在我的工作目录中。

我的问题是,如果我对我选择的某个文件执行 read.csv,例如,文件名是“FileName.csv”,有没有办法使用我选择的与我使用的文件

write.csv

它会在我的工作目录上给出名称 FileName 而无需手动编写它。还有一种方法可以添加我在执行 write.csv 时跳过的其他前 2 行

【问题讨论】:

    标签: r file


    【解决方案1】:

    您可以从 file.choose 中捕获文件名并保存跳过的行以供以后写出。

    ## Capture file name
    FileName = file.choose()
    
    # Capture skipped header lines
    IN=file(FileName, open="r")
    Header=readLines(IN, 2)
    Input <- read.csv(IN)          # No need to skip lines now
    close(IN)
    
    ## Whatever processing
    
    ## Output
    OUT = file(FileName ,open="w")
    writeLines(Header, OUT)
    write.csv(Input, OUT,  row.names=FALSE)
    close(OUT)
    

    【讨论】:

      【解决方案2】:

      您可以将文件路径/文件名保存到一个变量中,并在 read.csv 和 write.csv 中使用该变量:

      myfile <- file.choose()
      data <- read.csv(file=myfile, ...)
         ... lots of code...
      write.csv(data, file=myfile)
      

      【讨论】:

        【解决方案3】:

        如果可以的话,我会发表评论,因为我不确定这是一个完整的答案,但我想你可以使用:

        Data <- read.csv(file.choose(), skip=2))
        FileName <- basename(file.choose())
        write.csv(Data, FileName, row.names=FALSE)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-21
          • 2012-11-06
          • 1970-01-01
          • 2013-05-30
          • 2020-07-07
          • 1970-01-01
          • 2021-08-19
          相关资源
          最近更新 更多