在R中的模式之间替换文件中的多行

时间:2018-06-16 03:22:42

标签: r

您好我正在尝试使用向量中可用的新值替换#Table1和#Table2之间的值,该向量的长度与两个表之间的位数相同(3)。同样,我必须替换#Table2和#Table3以及#Table3和#Done之间的值。我的文件看起来像这样

"#start"
"x"
"y"
"#Table1"
"100"
"123"
"234"
"#Table2"
"3.4"
"9.4"
"#Table3"
"12"
"1"
"#Done"

我尝试使用gsub函数使用正则表达式来替换#Table1和#之间的内容,但它对我来说不起作用。

new_val=c(1,2,3) #new values which will replace original values
new_file=gsub("(#Table1).*?(#)",as.character(new_val), orig_file)

我也尝试了其他几个相关的函数,但似乎它们只解析一个特定的行而不是多行。我非常感激如果有人能提供一些见解。由于
输出应该看起来像

"#start"
"x"
"y"
"#Table1"
"1"
"2"
"3"
"#Table2"
"3.4"
"9.4"
"#Table3"
"12"
"1"
"#Done"

1 个答案:

答案 0 :(得分:0)

由于每行都是单独存储的,所以不要使用字符串操作。您只需直接替换相应的值:

t_id<-grep('#Table1',orig_file)
new_val<-c(1:3)
nval<-length(new_val)
new_file<-orig_file
new_file[t_id+(1:nval)]<-new_val

根据需要进行优化