我正在尝试使用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
答案 0 :(得分:3)
dg <- iris %>% mutate_each(funs(Replace15), matches("^Petal"))
或者(由@aosmith发布)您可以使用starts_with
。有关?select
,select
和summarise_each
mutate_each.
答案 1 :(得分:3)
mutate_each
is now deprecated,由mutate_if
和mutate_at
取代。使用这些替换,答案是
dg <- iris %>% mutate_at(vars(starts_with("Petal")), funs(Replace15))