删除r中列名中的特殊字符



我有一个数据集,其中一些列具有特殊字符。我想清理这个数据集,并从所有列中删除这些特殊字符。列名称的子集如下:

Crorf64[,1]
ADF3
DF41c[,1]
AGGF3[,1]
SRGHJ

我想要的输出是:

Crorf64
ADF3
DF41c
AGGF3
SRGHJ

我尝试删除列名称中带有特殊字符的部分如下所示:用这个答案作为指导https://stackoverflow.com/a/37801926/17054028:

training%>%
mutate(col=str_remove_all(col,"[.*"))

我得到一个错误,当我使用这个:

Error in `mutate()`:
! Problem while computing `col = str_remove_all(col, "[.*")`.
Caused by error in `stri_replace_all_regex()`:
! argument `str` should be a character vector (or an object coercible to)

欢迎任何其他替代方法来执行此任务。

我怀疑这可能是与你的其他问题相同的问题,所以首先尝试防止这些特殊字符的创建。

如果它们是由返回矩阵的函数创建的(例如scale()),请注意,[,1]实际上不是列名的一部分—它只是表示该列实际上是一个矩阵:

library(tidyverse)
df <- tibble(
Crorf64 = 1,
ADF3 = 2
)
# add brackets to column name
df <- df |> 
mutate(across(1, scale))
df
#> # A tibble: 1 × 2
#>   Crorf64[,1]  ADF3
#>         <dbl> <dbl>
#> 1         NaN     2
df |> colnames()
#> [1] "Crorf64" "ADF3"

创建于2023-04-03 with reprex v2.0.2

如果您不能在管道的早期解决此问题,您可以在事实之后从矩阵中提取列,如下所示:


df |> 
mutate(across(1, (x) x[,1]))
#> # A tibble: 1 × 2
#>   Crorf64  ADF3
#>     <dbl> <dbl>
#> 1     NaN     2

相关内容

  • 没有找到相关文章

最新更新