我正在处理一个大型 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/