首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替换.txt值中的值

替换.txt值中的值
EN

Stack Overflow用户
提问于 2017-04-09 21:09:17
回答 1查看 44关注 0票数 0

我有一个数据集,如下所示:

代码语言:javascript
运行
复制
B1,F1,D1,B0 B0  D1  F1  B1  B1,A1,E1    C#2 B1,G1,E1    B1,G1,E1    C#2,A1,E1   B1,G1,E1    B1  E2  B1,F1,D1    B1,D1,B0    B1,D1,B0    A1  F1  D1  G1,E1,B0    G1  G1  G1  E1  G1
B-1 A-1 G-1 G-1 F-1 E-1 B-1 B-1 B-1 E-1

我现在要做的是读入这些值,然后替换特定的值。

所以伪代码是:

代码语言:javascript
运行
复制
#Read in data
#For line in data:
 #Split words
  #if word contains value from list (fe C,D)
   #Replace it by X

所以如果我的清单是

代码语言:javascript
运行
复制
list_replace = c("B", "F")

我的预期输出是:

代码语言:javascript
运行
复制
X1,F1,D1,X0 X0  D1  X1  X1  X1,A1,E1    C#2 X1,G1,E1    X1,G1,E1    
C#2,A1,E1   X1,G1,E1    X1  E2  X1,X1,D1    B1,D1,B0    X1,D1,X0    A1  X1  
D1  G1,E1,X0    G1  G1  G1  E1  G1

X-1 A-1 G-1 G-1 X-1 E-1 X-1 X-1 X-1 E-1

我创建了以下代码:

代码语言:javascript
运行
复制
#Read in datea
data <-read.table("sample.txt", header = FALSE)
for i in 1:nrow(data){
  words = strsplit(data[i]
  for word 1:length(words){
   #Replace values
 }
}

但是,现在我只能获得to_be_replaced列表的第一个值。任何关于如何替换所有东西的建议...并且最好立即在.txt文件中编辑它。

EN

Stack Overflow用户

发布于 2017-04-09 22:31:15

我不确定您显示为示例的数据结构,但这里有一个函数可以完成此任务。

它将使用基本包中的gsub和一个正则表达式模式来查找感兴趣的字符,并允许一个变量输入,该变量输入将用给定值替换与该模式匹配的所有内容。

代码语言:javascript
运行
复制
 fn <- function(find = NULL, replace = "X"){
    raw_string <- readLines("sample.txt")
    sub_pat <- sprintf("(%s)", paste0(find, collapse = "|"))
    gsub(sub_pat, replace, raw_string)
}

因此,对于模式(字母) B, E, G

代码语言:javascript
运行
复制
fn(find = c("B", "E", "G"), replace = "XX")

[1] "XX1,F1,D1,XX0 XX0 D1 F1 XX1 XX1,A1,XX1 C#2 XX1,XX1,XX1 XX1,
     XX1,XX1 C#2,A1,XX1 XX1,XX1,XX1 XX1 XX2 XX1,F1,D1
     XX1,D1,XX0 XX1,D1,XX0 A1 F1 D1 XX1,XX1,XX0 XX1 XX1 XX1 XX1
     XX1"
[2] "XX-1 A-1 XX-1 XX-1 F-1 XX-1 XX-1 XX-1 XX-1 XX-1"
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43307049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档