我有一个混合了数字和字符变量的dataframe。我已经缩放了dataframe中的数字列。这现在导致特殊字符被添加到我的数字列名中。我想删除这些特殊字符,但我使用的代码没有删除它们。我如何才能做到这一点。我的尝试如下:
#scaling and centering data
df<-df%>%
mutate(across(where(is.numeric), scale))
#removing the special characters in the column names
names(df) <- sub("\\[.*", "", names(df))
特殊字符是[,1]
。欢迎使用dplyr
解决此问题。
3条答案
按热度按时间ibrsph3r1#
我建议你在管道中更早地解决这个问题。
scale()
返回一个矩阵,所以你的列名中最终会有括号。修改如下所示的代码,以提取该矩阵的第一列,并保持列名不变:创建于2023-04-03带有reprex v2.0.2
hl0ma9xz2#
你已经接受了答案,但是这个答案对于评论来说有点太长了。dufei是对的,你想在上游修复这个问题。另外,
scale()
返回一个矩阵,但是它也可以取一个矩阵-所以你不需要mutate(across())
。你可以只做:我想这样会快一些。
r7knjye23#
在
data.frame
或tibble
中,有一个矩阵列。当显示data.frame
时,它将添加.1
,.2
,...添加到矩阵的每一列的列名。在tibble
中,它将添加[,1]
。为了能够重命名这些列,您可以通过将矩阵转换为list
再转换回data.frame
来将矩阵转换为数据框的单列。NB