我不知道为什么我对“ t5”列的转换不成功-
“ t5”列是所有字符,我想将其转换为数字列,将非数字值保留为NA,在小标题中命名为“ t5.num”。
我的代码如下:首先,我分配了名称,然后尝试对列进行突变,但是它不起作用-
d <- tibble(id = c(3, 7, 1, 10,100), t5 = c("10", "<1", "NA", "8","78"))
convert_column <- function(data, col_name) {
new_col_name <- paste0(rlang::enquo(col_name),".num")
data %>%
mutate(new_col_name = as.numeric(!!col_name))
}
d %>% convert_column("t5")
有人可以指出我的代码有什么问题吗?谢谢你的帮助!
得到new_col_name
你不需要enquo
。要分配new_col_name
为列名,请使用!!
+ :=
。当您col_name
作为字符串传递时,我们需要将其转换为符号(sym
),然后求值(!!
)。
library(dplyr)
library(rlang)
convert_column <- function(data, col_name) {
new_col_name <- paste0(col_name,".num")
data %>% mutate(!!new_col_name := as.numeric(!!sym(col_name)))
}
d %>% convert_column("t5")
# A tibble: 5 x 3
# id t5 t5.num
# <dbl> <chr> <dbl>
#1 3 10 10
#2 7 <1 NA
#3 1 NA NA
#4 10 8 8
#5 100 78 78
在将“ <1”转换为数字之前将其转换为时返回警告NA
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句