我试图用现有的文本文件(参见下面的摘录)“替换”变量 我的R脚本。 变量称为var1到var6,下面的值需要重新定义。文本文件中变量的位置始终相同。
*** BLOCK B: WATER FLOW INFORMATION ************************************
hTab1 hTabN
1e-006 10000
M H
0 0
var1 var2 var3 var4 var5 var6
0.095 0.41 0.03 1.5 0.26 0.5
有人有任何想法吗? 亲切的问候
答案 0 :(得分:1)
我得到了这个解决方案,也许其他人更简单。
var1
strsplit
:xx gsubfn
替换旧列表。这是我的代码
ll <- readLines(textConnection(object='*** BLOCK B: WATER FLOW INFORMATION ************************************
hTab1 hTabN
1e-006 10000
M H
0 0
var1 var2 var3 var4 var5 var6
0.095 0.41 0.03 1.5 0.26 0.5 '))
## get the line with values
id <- which(grepl('var1',ll))
##
xx <-strsplit(gsub('[ ]+','|', ll[id+1]),'[|]')
## replace values
library(gsubfn)
vals <- 1:6
names(vals) <- xx[[1]]
ll[id+1] <- gsubfn("[[:digit:]]+[.][[:digit:]]+", as.list(vals), ll[id+1])
1] "*** BLOCK B: WATER FLOW INFORMATION ************************************"
[2] " hTab1 hTabN"
[3] "1e-006 10000"
[4] "M H"
[5] "0 0"
[6] "var1 var2 var3 var4 var5 var6"
[7] "1 2 3 4 5 6 "
答案 1 :(得分:0)
这就是我的做法(基本上是agstudy的解决方案)
library(gsubfn)
l <- readLines("myfile.txt")
id1 <- which(grepl('var1',l))
x <-strsplit(gsub('[ ]+','|', l[id1+1]),'[|]')
vals1 <- c("",0.095, 0.41, 0.03, 1.5,0.26,999999) # var values to be altered manually, i added ""
names(vals1) <- x[[1]]
l[id1+1] <- gsubfn("[[:digit:]]+[.][[:digit:]]+", as.list(vals1), l[id1+1])
writeLines(l, "myfile.txt") # overwrites the old myfile.txt
/欢呼声