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

标签 r string 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("-", "_"))

但是,这会导致错误: fix_replacement(replacement) 中的错误: 缺少参数“替换”,没有默认值。我对 lapply 的理解是它应该采用 colnames 并将每个元素单独应用于 str_replace,这反过来意味着 str_replace 的所有 3 个必要参数都应该存在。 有人知道这里发生了什么吗? 或者,如果您有更好的方法来编辑列名,我也很乐意倾听。

最佳答案

str_replace 是矢量化的。因此,无需遍历列名。此外,lapply 的输出是 list 而不是 vector 以及没有 lambda 的事实在 lapply 中调用(如果我们传递命名参数,则不需要 ()

library(stringr)
names(exampleData) <- str_replace(names(exampleData), "-", "_")

或者使用 janitor

中的 clean_names
library(janitor)
exampleData <- exampleData %>%
            clean_names()

关于r - 如何编辑所有列名以替换 R 中的某个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68926419/

相关文章:

r - geom_smooth() : One line, 不同的颜色

javascript - JavaScript 中合并两个字符串的算法

javascript - `toLowerCase` 可以更改 JavaScript 字符串的长度吗?

在 R 中重构向量

arrays - 对数组进行切片或使用 Iterator::skip 哪个更有效?

从数据框中删除 N/A

r - mgcv 中基于张量积的高斯过程更平滑

r - 如何有条件地逐行比较数据并将不同的结果输出到其他列?

c# - 在 C# 中将 2 个本地字符串 [] 添加到单个数组中

c++ - 如何将 STL vector 传递给采用 const [] 的函数 (c++)