Автоматизировать подстановку данных во фрейме данных - PullRequest
0 голосов
/ 14 ноября 2018

Я читаю разделенный табуляцией файл .txt с двумя полями данных (V1 и V2) в RStudio, используя read.table

    V1      V2
    Ndepmax 3000
    intx    6
    Sdepmax 3000
    inty    6

Этот файл .txt содержит список значений параметров, которые будут использоваться в качестве входных данных для .exe, который будет запускаться из RStudio с использованием команды system(), доступной в базе R

Я бы хотел повторить запуск этого .exe с разными значениями для Ndepmax

Я планирую извлечь значения для Ndepmax из другой таблицы данных, просматривая список значений spec_num и используя команду vlookup из пакета expss

maxNdep <- vlookup(spec_num, MinMaxNdep, result_column='NDEP30_max')

Мне не удалось определить, как принять эти итеративные значения maxNdep и использовать их для замены значения для Ndepmax во входном файле, который будет передан в .exe с использованием system()

Буду очень признателен за любой совет, как выполнить эту замену.

РЕДАКТИРОВАТЬ: дальнейший код / ​​пояснения включены ниже ...

# Input parameter file to use for building the string for "clf_cmd"
in_file = read.table("input.txt")
head(in_file, 4)
       V1   V2
1 Ndepmax 3000
2    intx    6
3 Sdepmax 3000
4    inty    6

# File containing min/max Ndep
MinMaxNdep = read.table(MinMaxNdep, header = TRUE)
head (MinMaxNdep, 1)
  SPNUM NDEP30_min NDEP30_max
1 33786    12.7265    22.7265

# Identify species of interest
# I will ultimately loop through a set of spec_num values, but just starting with a single species for now
spec_num <- MinMaxNdep$SPNUM[1]

# Define maxNdep value to use for substitution into `in_file`
library(expss)
maxNdep <- vlookup(spec_num, MinMaxNdep, result_column='NDEP30_max')

# Substitute value of maxNdep for the value of Ndepmax included in the `in_file` data frame
# Not sure how to do this???
# Need to replace the value of 3000 for Ndepmax in the `in_file` data frame with the maxNdep value included in `MinMaxNdep` for spec_num = 33786

# string passed to cmd line for running the .exe
clf <- system((paste0("clf i:in_file", spec_num, ".in"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...