-3

I have this df

head(c$cell)
[1] "KO_d6_r1#AAACAGCCACCTGCTC-1" "KO_d6_r1#AAACAGCCACGTAATT-1" "KO_d6_r1#AAACAGCCATAATGAG-1" "KO_d6_r1#AAACATGCACCTAATG-1" "KO_d6_r1#AAACATGCAGGAATCG-1"
[6] "KO_d6_r1#AAACATGCAGGATAAC-1"

There are about 30'000 entries. I would to change the whole df in the way to obtain this:

[1] "KO_d6_r1_AAACAGCCACCTGCTC-1" "KO_d6_r1_AAACAGCCACGTAATT-1" "KO_d6_r1_AAACAGCCATAATGAG-1" "KO_d6_r1_AAACATGCACCTAATG-1" "KO_d6_r1_AAACATGCAGGAATCG-1"
[6] "KO_d6_r1_AAACATGCAGGATAAC-1"

please could u suggest me how to do this?

jonny jeep
  • 383
  • 3
  • 12

1 Answers1

1

You haven't described your problem very well, hence the downvotes. But I think what you want is to replace # with _ in the column cell. So here is how you can do that:

# create some example data
c <- data.frame(cell = c("KO_d6_r1#AAACAGCCACCTGCTC-1",
                         "KO_d6_r1#AAACAGCCACGTAATT-1",
                         "KO_d6_r1#AAACAGCCATAATGAG-1",
                         "KO_d6_r1#AAACATGCACCTAATG-1",
                         "KO_d6_r1#AAACATGCAGGAATCG-1",
                         "KO_d6_r1#AAACATGCAGGATAAC-1"))

# replace values
c$cell <- gsub("#", "_", c$cell)
c
#>                          cell
#> 1 KO_d6_r1_AAACAGCCACCTGCTC-1
#> 2 KO_d6_r1_AAACAGCCACGTAATT-1
#> 3 KO_d6_r1_AAACAGCCATAATGAG-1
#> 4 KO_d6_r1_AAACATGCACCTAATG-1
#> 5 KO_d6_r1_AAACATGCAGGAATCG-1
#> 6 KO_d6_r1_AAACATGCAGGATAAC-1

If your goal is instead to do this for all columns in your data frame, you could use the tidyverse:

# load package
library(tidyverse)

# create some example data
c <- data.frame(cell = c("KO_d6_r1#AAACAGCCACCTGCTC-1",
                         "KO_d6_r1#AAACAGCCACGTAATT-1",
                         "KO_d6_r1#AAACAGCCATAATGAG-1",
                         "KO_d6_r1#AAACATGCACCTAATG-1",
                         "KO_d6_r1#AAACATGCAGGAATCG-1",
                         "KO_d6_r1#AAACATGCAGGATAAC-1"))

# replace values in all columns
c %>% 
  mutate(across(everything(), ~gsub("#", "_", .x)))
#>                          cell
#> 1 KO_d6_r1_AAACAGCCACCTGCTC-1
#> 2 KO_d6_r1_AAACAGCCACGTAATT-1
#> 3 KO_d6_r1_AAACAGCCATAATGAG-1
#> 4 KO_d6_r1_AAACATGCACCTAATG-1
#> 5 KO_d6_r1_AAACATGCAGGAATCG-1
#> 6 KO_d6_r1_AAACATGCAGGATAAC-1

Created on 2022-08-03 by the reprex package (v2.0.1)

JBGruber
  • 11,727
  • 1
  • 23
  • 45
  • thank you very much, @JBGruber. If I would to do the opposite, I mean, replace "KO_d6_r1_AAACAGCCACCTGCTC-1" with "KO_d6_r1#AAACAGCCACCTGCTC-1", could you suggest me the code? – jonny jeep Aug 03 '22 at 12:44
  • Just change the order of gsub: `gsub("_", "#", .x)`. I would also recommend you read the help file for gsub (`?gsub`). If efficiency is a concern, you can also use ``gsub("_", "#", .x, fixed = TRUE)`. – JBGruber Aug 03 '22 at 14:12