【问题标题】:How can I use R to substitute base names of files in a script for CMD?如何使用 R 将脚本中文件的基本名称替换为 CMD?
【发布时间】:2018-11-21 20:56:56
【问题描述】:

我想使用 R 进入我拥有的文本文档,并用我存储在 R 中的列表中的前两行文件的基本名称(输入和输出)迭代替换。文本文件看起来像这样:

parameter  input "C:\Users\inputdirectory\20090522_104644_r2_0_DVJ_50.k"
parameter  output "C:\Users\outputdirectory\20090522_104644_r2_0_DVJ_50.k"
parameter  meshsize 60.0
parameter  zlength 500.0
parameter  zelem 10
runscript "meshoutline.scl"  &input &output &meshsize &zlength &zelem

想法是替换输入和输出文件(它们应该是相同的名称,因为它们存储在不同的目录中),然后发送脚本以在 CMD 中运行。然后用列表中的下一个文件名重复循环,在 R 中看起来像这样:

flist <- c("20080715_160601_es_2_KOE_50", "20080806_162049_es_0_JSX_50", "20080810_004229_es_0_WIB_50")

我以前从未将 R 用于系统的东西。这可能吗?

【问题讨论】:

  • 到目前为止你尝试过什么?最终你可以使用paste0()system()

标签: r substitution systems-programming


【解决方案1】:

你可以这样做:

s0 <-
c('parameter  input "C:\\Users\\inputdirectory\\"',
'parameter  output "C:\\Users\\outputdirectory\\"',
'parameter  meshsize 60.0',
'parameter  zlength 500.0',
'parameter  zelem 10',
'runscript "meshoutline.scl"  &input &output &meshsize &zlength &zelem')

flist <- c("20080715_160601_es_2_KOE_50", "20080806_162049_es_0_JSX_50", "20080810_004229_es_0_WIB_50")

for (file in flist) {
  s <- s0
  s[1:2] <- paste0(s[1:2], file)
  sapply(s, system)
}

【讨论】:

  • 我认为这段代码试图做的是通过 CMD 运行 s0 的每一行。 S0 需要保存为自己的文本文件,并按此方式通过 CMD 运行,而不是按行运行。
猜你喜欢
  • 2017-11-09
  • 2020-08-03
  • 1970-01-01
  • 2014-09-22
  • 2011-02-12
  • 2011-02-09
  • 2020-02-14
  • 1970-01-01
  • 2017-11-09
相关资源
最近更新 更多