使用 dplyr 在 R 中将多列转换为双精度类型

Vib*_*mat 1 r dplyr

我有一个数据框,其中包含许多包含字符串格式的十进制值的列,我正在尝试找到一种方法将所有包含数值的列转换为双精度类型。例如,通过指定要转换的列范围,在本例中为 df[2:4]。

由此:

df <- data_frame(cat = c('A', 'B', 'C'), 
             X11 = c('0.1', '0.3', '0.5'), 
             Y2 = c('0.2', '0.2', '0.7'), 
             P3 = c('0.14', '0.31', '0.35'),
             type = c('H', 'I', 'J'))
Run Code Online (Sandbox Code Playgroud)

对此:

df <- data_frame(cat = c('A', 'B', 'C'), 
             X11 = c(0.1, 0.3, 0.5), 
             Y2 = c(0.2, 0.2, 0.7), 
             P3 = c(0.14, 0.31, 0.35),
             type = c('H', 'I', 'J'))
Run Code Online (Sandbox Code Playgroud)

我一直试图让它与不同的 dplyr mutate 函数一起工作,但我不知道如何去做。

如果我能就此获得一些建议,我将不胜感激。

akr*_*run 7

这将是更好地做到这一点type.convertbase R它基于每一列中的值自动修正型

df1 <- type.convert(df, as.is = TRUE)
Run Code Online (Sandbox Code Playgroud)

在 中dplyr,可以across使用数字索引来完成并指定列的范围

df %>%
   mutate(across(2:4, as.numeric))
Run Code Online (Sandbox Code Playgroud)

或列名范围

df %>%
   mutate(across(X11:P3, as.numeric))
Run Code Online (Sandbox Code Playgroud)