如何使用dplyr分配回数据帧列

如何使用dplyr分配回数据帧列,r,dataframe,dplyr,R,Dataframe,Dplyr,我需要使用dplyr修改数据框中的一些列。比如说, select(mtcars,hp:am)+99 我如何分配回数据帧mtcars mtcars[,4:9]=select(mtcars,hp:am)+99 可以,但它使用绝对索引4:9,我希望避免这种情况(这就是我使用dplyr:操作的原因)。您可以从subset()命令中借用一些逻辑来获取变量索引列表 varindex <- function(x, select) { if (missing(select))

我需要使用
dplyr
修改数据框中的一些列。比如说,

select(mtcars,hp:am)+99
我如何分配回数据帧
mtcars

mtcars[,4:9]=select(mtcars,hp:am)+99

可以,但它使用绝对索引4:9,我希望避免这种情况(这就是我使用
dplyr
操作的原因)。

您可以从
subset()
命令中借用一些逻辑来获取变量索引列表

varindex <- function(x, select) {
    if (missing(select)) 
        TRUE
    else {
        nl <- as.list(seq_along(x))
        names(nl) <- names(x)
        eval(substitute(select), nl, parent.frame())
    }
}

您可以从
subset()
命令中借用一些逻辑来获取变量索引列表

varindex <- function(x, select) {
    if (missing(select)) 
        TRUE
    else {
        nl <- as.list(seq_along(x))
        names(nl) <- names(x)
        eval(substitute(select), nl, parent.frame())
    }
}

有点复杂,我就是这么想的。有没有更简单的解决方案?@hxd1011我也添加了一个dplyr解决方案。感谢您提供了不同选项的完整解决方案,您教会了我如何自己发现,而不是直接给我解决方案!有点复杂,我就是这么想的。有没有更简单的解决方案?@hxd1011我也添加了一个dplyr解决方案。感谢您提供了不同选项的完整解决方案,您教会了我如何自己发现,而不是直接给我解决方案!
mutate_at(mtcars, vars(hp:am), function(x) x+99)