【问题标题】:Open files with variable filenames [duplicate]打开具有可变文件名的文件[重复]
【发布时间】:2014-12-19 13:38:30
【问题描述】:

我使用 R.matlab 包读取了一个 matlab 文件,并从中获取了一个数字作为列表。我把它变成一个数字:

library(R.matlab)

# simple case: static filename

setwd("C:/Files/Fold")
nc <- readMat('passvar1.mat')

nC <- as.numeric(nc)
nC
## 10

更复杂的演员表:我需要在 R 的文件夹中打开文件,名称为 nC:C:/Files/Coordinates/CoordsRS%nC%.md.txt

除编号外,所有文件名相同,例如:

 C:/Files/Coordinates/CoordsR4.md.txt
 C:/Files/Coordinates/CoordsR10.md.txt

并且,我需要对该文件内容应用操作(即,将参数传递给readMat,以便它可以动态读取它们)

【问题讨论】:

  • @hrbrmstr。我不认为它是重复的,因为我尝试过。它不起作用。 newC

标签: r file arguments


【解决方案1】:

使用paste0 或sprintf 调用来构建文件名应该是最简单的。例如

nC <- 10
paste0("C:/Files/Coordinates/CoordsR", nC, ".md.txt")
# [1] "C:/Files/Coordinates/CoordsR10.md.txt"
sprintf("C:/Files/Coordinates/CoordsR%d.md.txt",nC)
# [1] "C:/Files/Coordinates/CoordsR10.md.txt"

sprintf() 在使用前导零填充或以其他方式在插入字符串之前格式化数字时有更多选择。然后您可以将这些文件名传递给readMat()

【讨论】:

  • 谢谢。我没有发布我也尝试过 sprintf 并且我得到了我需要的东西,但它的类是字符。> xx
  • 只需使用readMat(xx) 或read.table(xx) 或者您想打开文件。为什么这不起作用?你想用这条路径做什么?
  • 谢谢。 read.table(xx) 完成了这项工作。 readMat(xx) 返回错误:mat5ReadTag(this) 中的错误:未知数据类型。不在范围 [1,19]:11829 另外:警告消息:1:在 readMat5Header(this, firstFourBytes = firstFourBytes) 中:未知字节序:-6。将承担Bigendian。 2:在 readMat5Header(this, firstFourBytes = firstFourBytes) 中:未知 MAT 版本标签:2336。将假定版本 5。
猜你喜欢
  • 2017-09-17
  • 2018-05-30
  • 1970-01-01
  • 2018-10-22
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
相关资源
最近更新 更多