首页 > 解决方案 > 使用 str_to_title 更改 col 名称时出现问题

问题描述

我有一个如下所示的数据集:

在此处输入图像描述

它可以使用代码构建:

df<- structure(list(`Med` = c("DOCETAXEL", 
"BEVACIZUMAB", "CARBOPLATIN", "CETUXIMAB", "DOXORUBICIN", "IRINOTECAN"
), `2.4 mg` = c(0, 0, 0, 0, 1, 0), `PRIOR CANCER THERAPY` = c(4L, 
3L, 3L, 3L, 3L, 3L), `PRIOR CANCER SURGERY` = c(0, 0, 0, 0, 0, 
0), `PRIOR RADIATION THERAPY` = c(0, 0, 0, 0, 0, 0)), row.names = c(NA, 
6L), class = "data.frame")

现在我想将不以数字开头的 col 名称更改为正确的大小写。我该怎么做?我以为我可以使用str_to_title. 我尝试了很多方法都无法让它工作。这是我尝试过的代码:

# try1:
df[,3:5] %>% setNames(str_to_title(colnames(df[,3:5])))

#try2:
df[,3:5] <- df[,3:5]%>% rename_with (str_to_title)

# try3:
colnames(df[,3:5])<- str_to_title(colnames(df[,3:5]))

我做错了什么?没有错误消息,只是 col 名称没有更新。任何人都可以帮我找出问题所在,或者如果有的话,可以告诉我一个更好的方法吗?

在这里我有小数据,然后我可以找到列号。如果我希望它自动将 col 名称更正为正确的大小写,我该怎么做?

谢谢。

标签: r

解决方案


我们可以用

library(dplyr)
library(stringr)
df %>%
   rename_at(3:5, ~ str_to_title(.))

-输出

#         Med 2.4 mg Prior Cancer Therapy Prior Cancer Surgery Prior Radiation Therapy
#1   DOCETAXEL      0                    4                    0                       0
#2 BEVACIZUMAB      0                    3                    0                       0
#3 CARBOPLATIN      0                    3                    0                       0
#4   CETUXIMAB      0                    3                    0                       0
#5 DOXORUBICIN      1                    3                    0                       0
#6  IRINOTECAN      0                    3                    0                       0

或使用rename_with

df %>% 
  rename_with(~ str_to_title(.), 3:5)

推荐阅读