作为dplyr的忠实粉丝及其整洁的数据概念,我想在数据帧中存在特定变量时进行变异 . 这是个主意:
# Load libraries
library(dplyr)
# Create data frames
df1 <- data.frame(year = 2000:2010, foo = 0:10)
df2 <- data.frame(year = 2000:2010)
# Create function
cnd_mtt <- function(df){
df %>%
mutate_if(colname == "foo", as.factor) # <---- this is the tricky part
}
预期结果:该功能应适用于两个数据帧且无错误
想法?
3 回答
您可以将
mutate_at
与one_of
一起使用,如果该列不存在,则会引发警告消息:只是为了澄清一下,当
one_of
无法解析vars
变量中的列名时,会引发警告消息:如果你想进一步摆脱警告信息,取@gregor的评论,你可以使用
mutate_at
和if/else
,如果列中不存在foo
则返回integer(0)
:使用基本的管道操作,我不相信dplyr . 也尽量不要使用df作为变量名
在Psidom答案的基础上,你也可以使用
quietly
来避免警告: