我有一个循环读取的文件,需要替换某个变量。
ptl <- readLines("template.txt") %>%
gsub(pattern = "TEMPNUM", replace = format(testval) %>%
write.table(., paste0("test.txt"), row.names=F, col.names=F, quote = F)
testval在每个循环中都会改变,但我希望它是正确的。
在此,相关行如下:
F 0 0.000 -10.000 10.000 .10 1.0 0 0 0 99 0 0
T 0 TEMPNUM 1.000 1.001 .10 1.0 0 3 1 0 3 0
现在,很显然,最终文件如下所示:
F 0 0.000 -10.000 10.000 .10 1.0 0 0 0 99 0 0
T 0 1.0005 1.000 1.001 .10 1.0 0 3 1 0 3 0
F 0 0.000 -10.000 10.000 .10 1.0 0 0 0 99 0 0
T 0 1.0005 1.000 1.001 .10 1.0 0 3 1 0 3 0
replace = format(val[1,2]), justify="right")
PS
T 0 TEMPNUM
的长度为13个字符,并且在我的所有文件中都是固定的。如果有帮助的话。
答案 0 :(得分:0)
打开选项是使用write.fwf
包中的gdata
函数。我已经使用OP提供的数据来创建一个data.frame,并尝试将其写入文件。
library(dplyr)
library(gdata)
df %>% mutate(V3 = gsub(pattern = "TEMPNUM", replace = format(1.05), V3)) %>%
write.fwf(., paste0("d:\\test.txt"), colnames = FALSE, justify="right", quote = FALSE)
文件内容为:
FALSE 0 0.000 -10 10.000 0.1 1 0 0 0 99 0 0
TRUE 0 1.05 1 1.001 0.1 1 0 3 1 0 3 0
数据:
df <- read.table(text =
"F 0 0.000 -10.000 10.000 .10 1.0 0 0 0 99 0 0
T 0 TEMPNUM 1.000 1.001 .10 1.0 0 3 1 0 3 0",
stringsAsFactors = FALSE)