r - 用长字符串中特定位置的其他字符替换一个字符,并将更改后的字符串在R中递归地保存为新字符串
问题描述
我有一长串
string <- "bdbakdljbbkhkcksbfjsvcjsvksnclndkbksbcsbck"
现在我想用 V1 替换“replace_position”中列出的字符位置,并将新字符串保存为新文件,命名为位置号更改。迭代地改变每个位置
replace_position <- c(4, 5, 19, 24, 30, 36, 39, 40)
v1 <- c("E", "N", "M", "o", "p", "q", "r", "S")
write.csv("4.csv")
write.csv("5.csv")
等等..
预期结果:
4th_string <- "bdbEkdljbbkhkcksbfjsvcjsvksnclndkbksbcsbck"
5th_string <- "bdbaNdljbbkhkcksbfjsvcjsvksnclndkbksbcsbck"
19 等等有没有其他方法可以在 R 中使用 for 循环或正则表达式
解决方案
如果打算用单个字符替换该位置的字符,则使用substring
for(i in seq_along(replace_position))
substr(str1, replace_position[i], replace_position[i]) <- "#"
str1
#[1] "bdb##dljbbkhkcksbf#svcj#vksnc#ndkbk#bc##ck"
正如@RuiBarradas 提到的,这可以写回文件cat
cat(str1, file = "file1.txt")
根据OP的评论,如果替换的值因位置不同而不同,则只需更改赋值的rhs
for(i in seq_along(replace_position))
substr(str1, replace_position[i], replace_position[i]) <- v1[i]
str1
#[1] "bdbENdljbbkhkcksbfMsvcjovksncpndkbkqbcrSck"
数据
replace_position <- c(4, 5, 19, 24, 30, 36, 39, 40)
str1 <- "bdbakdljbbkhkcksbfjsvcjsvksnclndkbksbcsbck"
v1 <- c("E", "N", "M", "o", "p", "q", "r", "S")
推荐阅读
- python - Python xlwings 无法运行 COM 服务器
- c# - 管理直播查看器巨大的日志
- css - 不同大小的元素之间的相同间隔
- ffmpeg - 在 C 项目中解码 x.265 (HEVC) 流的免费和开源库?
- reactjs - 创建反应应用程序中未定义的环境变量
- angular - 如何访问传递的对象内的数据?
- java - 重复的键值违反了唯一约束,但它不应该 [Spring Boot,PostgreSQL]
- python - 如何在不使用 python 中的类的情况下实现数据结构?
- android - Firebase 身份验证所需的 Android 权限
- tensor - 张量和张量等级(CP等级)