r 使用模式更改列名称的列类型

r change column type of columns names with pattern

如果我的数据集有这样的列

ID   Group  Col_item_01   Col_item_02   Col_item 03  
1    Blue    11.23        10.12         4.3
2    Green   10.21        18.24         5.9
4    Purple  4.23          7.64         15.97

如何将所有以 , Col_item_... 开头的列转换为从字符输入数字?我知道我可以单独执行此操作,df1$Col_item_01 <- as.numeric(as.character(df1$Col_item_01),但我对使用 grep 或 grepl 或字符串函数仅提取这些以 Col_item_... 开头的列并将它们更改为数字的有效方法感兴趣。非常感谢任何建议。谢谢

使用type.convert:

df1 <- type.convert(df1, as.is = TRUE)

我们可以循环 across starts_with 'Col_item_' 的列并在 tidyverse

中转换为 numeric
library(dplyr)
df1 <- df1 %>%
       mutate(across(starts_with("Col_item_"),
              ~ as.numeric(as.character(.))))

或在 base R 中,使用 grep 获取具有模式的列名称并循环遍历 lapply 中的选定列并进行赋值

nm1 <- grep("^Col_item_", names(df1))
df1[nm1] <- lapply(df1[nm1], function(x) as.numeric(as.character(x)))