我正在尝试使用dplyr更改数据框列的类 . 目标列的名称包含在变量中
my_df<-data.frame(colour=c("red","blue","green"),
val1=as.character(c(1,12,13)),
val2=c(21,22,23))
target_var="val1"
在一些摆弄之后,我设法使用标准R子集来达到我的目标:
my_df %>% transmute(colour = colour,
!!myval := as.numeric(.[,myval]))
但我怀疑引用目标列的方法较为复杂,这与其他'dplyr'表达式更为一致 . 我试图用"Programming with dplyr"小插图中的信息解决这个问题,但没有运气 . 有人能指出我正确的方向吗?
3 回答
我们可以使用
sym
转换为symbol
然后使用!!
注意:'val1'是
factor
,因为默认情况下stringsAsFactors = TRUE
. 所以,我们需要将其转换为character
然后转换为numeric
数据
您正在寻找
mutate_at
功能 . 您的代码如下所示:这种方法的唯一缺点是你最终得到了完整的数据集(
mutate
)而不是所选的变量(就像transmutate
一样) . 您可以使用transmutate_at
,但这会将提供的函数应用于所有选定的变量 .我发现如何通过最少的转换来完成此操作: