如何仅将字符串添加到 R 中字符列的子集

How to add a string only to a subset of a character column in R

我有一个类似于下面的数据框:

# A tibble: 32 × 3
  sample     IP  value
   <chr>  <chr> <dbl>
 1 prot1    -IP      0
 2 prot1   Mock      0
 3 prot2    -IP      0
 4 prot2   Mock      0
 5 prot3    -IP      0
 6 prot3   Mock      0
# … with 22 more rows

我只想在 IP 列中包含行的 -IP 前面添加一个由变量 (a <- ("str") ) 指定的字符串,获得如下内容:

    # A tibble: 32 × 3
      sample     IP  value
       <chr>  <chr> <dbl>
     1 prot1 str-IP      0
     2 prot1   Mock      0
     3 prot2 str-IP      0
     4 prot2   Mock      0
     5 prot3 str-IP      0
     6 prot3   Mock      0
    # … with 22 more rows

我想我们可以使用 pastefilter 的组合,但我想保留整个数据集。

为了获得精确的解决方案,我们可以在此处使用sub

df$IP <- sub("-IP", paste0(a, "-IP"), df$IP, fixed=TRUE)

另一种选择,使用 ifelsegrepl:

df$IP <- ifelse(grepl("^-IP$", df$IP, fixed=TRUE), paste0(a, "-IP"), df$IP)