首页 文章

列的子集上的dplyr,同时保留其余的data.frame

提问于
浏览
3

我试图使用dplyr将函数应用于列的子集 . 但是,与下面的代码相反,我试图在保留数据框中的所有列的同时实现这一点 . 目前,生成的数据框仅保留选定的列 . 我可以使用remove-and-cbind构造将这些列合并回原始数据帧,但我想知道是否有办法在dplyr中直接执行此操作?我试图在mutate函数中移动select函数,但是还没能使这个工作 .

require(dplyr)
Replace15=function(x){ifelse(x<1.5,1,x)}
dg <- iris %>%
  dplyr::select(starts_with("Petal")) %>%
  mutate_each(funs(Replace15))  
dg

> dg
Source: local data frame [150 x 2]

   Petal.Length Petal.Width
1           1.0           1
2           1.0           1
3           1.0           1
4           1.5           1
5           1.0           1
6           1.7           1
7           1.0           1
8           1.5           1
9           1.0           1
10          1.5           1

2 回答

  • 3
    dg <- iris %>% mutate_each(funs(Replace15), matches("^Petal"))
    

    或者(由@aosmith发布)你可以使用 starts_with . 看看 selectsummarise_eachmutate_each. 中可用的其他特殊功能 ?select

  • 3

    mutate_each is now deprecated,由 mutate_ifmutate_at 取代 . 使用这些替代品,答案是

    dg <- iris %>% mutate_at(vars(starts_with("Petal")), funs(Replace15))
    

相关问题