如何在文件中查找和替换特定字符串?

时间:2018-01-25 10:31:21

标签: r replace gsub

我有这样的数据:

Ind M1  M2  M3  M4  M5
P1  A/A Unused  G/A T/T T/T
P2  T/T A/A A/A A/A G/G
1   T/A A/A G/A T/T G/G
2   Unused1 A/A G/A T/T T/G
3   T/T A/A G/A T/T T/G
4   Unused1 A/A G/A A/T G/G
5   T/A A/A G/A A/T Unused1

我希望在整个文件中将T/T替换为TT。 请在此处找到我的数据链接

https://www.dropbox.com/s/r1eib3grr11tjpw/data.txt?dl=0

我使用了gsub函数,但我得到的是奇怪的输出,比如  "c(6, 7, 1, 2, 3, 4, 5)" "c(1, 3, 2, 4, 3, 4, 2)" "c(2, 1, 1, 1, 1, 1, 1)

如何将此T/T替换为TT

2 个答案:

答案 0 :(得分:1)

数据:

df1 <- read.table(text="Ind M1  M2  M3  M4  M5
P1  A/A Unused  G/A T/T T/T
                  P2  T/T A/A A/A A/A G/G
                  1   T/A A/A G/A T/T G/G
                  2   Unused1 A/A G/A T/T T/G
                  3   T/T A/A G/A T/T T/G
                  4   Unused1 A/A G/A A/T G/G
                  5   T/A A/A G/A A/T Unused1", header = TRUE)

代码:

df1 <- data.frame(lapply( df1, function(x) gsub("T/T", "TT", x, fixed = TRUE)))
df1
#   Ind      M1     M2  M3  M4      M5
# 1  P1     A/A Unused G/A  TT      TT
# 2  P2      TT    A/A A/A A/A     G/G
# 3   1     T/A    A/A G/A  TT     G/G
# 4   2 Unused1    A/A G/A  TT     T/G
# 5   3      TT    A/A G/A  TT     T/G
# 6   4 Unused1    A/A G/A A/T     G/G
# 7   5     T/A    A/A G/A A/T Unused1

要将所有"/"替换为"",请使用:

data.frame(lapply(df1, function(x) gsub("/", "", x, fixed = TRUE)))

答案 1 :(得分:0)

使用基础R您可以执行类似的操作(假设您的数据称为your_data):

as.data.frame(sapply(your_data, function(x) gsub("T/T", "TT", x)))

#  Ind      M1     M2  M3  M4      M5
#1  P1     A/A Unused G/A  TT      TT
#2  P2      TT    A/A A/A A/A     G/G
#3   1     T/A    A/A G/A  TT     G/G
#4   2 Unused1    A/A G/A  TT     T/G
#5   3      TT    A/A G/A  TT     T/G
#6   4 Unused1    A/A G/A A/T     G/G
#7   5     T/A    A/A G/A A/T Unused1