【发布时间】:2015-06-25 15:34:08
【问题描述】:
我正在尝试使用 dplyr 将函数应用于列的子集。但是,与下面的代码相比,我试图在将所有列保留在数据框中的同时实现这一点。目前,生成的数据框仅保留选定的列。我可以使用 remove-and-cbind 构造将这些列合并回原始数据框,但我想知道是否有办法直接在 dplyr 中执行此操作?我试图将 select 函数移到 mutate 函数中,但还不能完成。
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
【问题讨论】:
-
也许只是
iris %>% mutate_each(funs(Replace15), starts_with("Petal"))? -
您还可以根据内置的
replace函数来定义您的函数。ifelse可能会很慢,如果您担心的话。 stackoverflow.com/q/16275149/1191259