如何编辑所有列名以替换R中的某个字符?

dr_*_*ice 3 string r vector lapply

我正在处理大量的 SNP 数据集,其中一些数据集的格式使得它们很难与我正在使用的机器学习包一起使用。具体来说,某些列名称中的连字符引起了问题,因此我尝试将其替换为下划线。我知道可能有多种方法可以做到这一点,但这是我用我有限的 R 知识尝试的方法,使用 lapply 和 str_replace:

library(tidyverse)
    
    exampleData = tribble(
      ~SNP-1_1, ~SNP-1_2, ~SNP-2_2, ~SNP-2_3,
      0, 1, 1, 0,
      1, 0, 1, 0, 
      0, 0, 0, 1
    )
    
    colnames = names(exampleData)
    colnames = lapply(colnames, str_replace("-", "_"))
Run Code Online (Sandbox Code Playgroud)

然而,这会导致错误:fix_replacement(replacement) 中的错误:参数“replacement”丢失,没有默认值。我对 lapply 的理解是,它应该采用 colnames 并将每个元素单独应用于 str_replace,这反过来意味着 str_replace 的所有 3 个必要参数都应该在那里。有人知道这是怎么回事吗?或者,如果您有更好的编辑列名称的方法,我也很乐意听取。

Tar*_*Jae 5

基地R使用gsub

colnames(exampleData) = gsub("-", "_", colnames(exampleData))
Run Code Online (Sandbox Code Playgroud)
  SNP_1_1 SNP_1_2 SNP_2_2 SNP_2_3
    <dbl>   <dbl>   <dbl>   <dbl>
1       0       1       1       0
2       1       0       1       0
3       0       0       0       1
Run Code Online (Sandbox Code Playgroud)