【问题标题】:R read csv error. passing file name from another valueR 读取 csv 错误。从另一个值传递文件名
【发布时间】:2021-10-10 05:50:19
【问题描述】:

在 R 中的 read.csv 命令中传递要用作文件名的值时出错

我有一堆 csv 文件,每个文件都分配有一个值 Mx_csv,其中 x 是一个从 1 到 8 的数字。

M3_csv <- "123123_out.csv"
M4_csv <- "178787_out.csv"

我通过更改 1 行代码来选择要处理的 M:

Ma = "M4" // that then tells all following code which M to use
setwd(paste0("D:/RA_",Ma))  // sets the working directory folder RA_M4 

filenm <- paste0(Ma,"_csv")
Mn <- read.csv(file = filenm,header = TRUE)

在这种情况下,x 变为“M4_csv”,但不是加载 178787_out.csv 的 read.csv 命令,而是尝试加载名为 M4_csv 和错误的文件。

我确定这是一个简单的解决方法,但谷歌并没有帮助我找到答案

非常感谢您的帮助

【问题讨论】:

  • 你可以试试get(paste0(Ma,"_csv"))。我对 get 函数的理解是它在环境中搜索具有该名称的对象。

标签: r csv filenames


【解决方案1】:

一种选择是将您的文件名放入列表中。此外,可能不需要切换工作目录,因为您可以使用例如将数据文件的路径添加到文件名中。 file.path:

fn_list <- list(
  M3 = "123123_out.csv",
  M4 = "178787_out.csv"
)

Ma <- "M4"
filenm <- file.path(paste0("D:/RA_",Ma), fn_list[[Ma]])
filenm
#> [1] "D:/RA_M4/178787_out.csv"

Mn <- read.csv(file = filenm, header = TRUE)

【讨论】:

  • 谢谢,完美运行。我现在正在尝试运行一个 IF,如果 (Ma = M1) {Mn_dt
猜你喜欢
  • 2012-06-17
  • 2015-11-26
  • 2018-10-15
  • 1970-01-01
  • 2014-06-12
  • 2016-06-14
  • 2016-10-30
  • 1970-01-01
  • 2017-10-18
相关资源
最近更新 更多