微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过%>%的因数转换为数字:意外结果

如何解决通过%>%的因数转换为数字:意外结果

通过管道%>%运算符将因子转换为数值向量时,我错误地认为

myfactor%>%as.character%>%as.numeric

将给出与

相同的结果

myfactor%>%as.numeric(as.character(。))

c(0,1,2) %>% as.factor  %>% as.character %>% as.numeric ## returns 0,2
c(0,2) %>% as.numeric(as.character(as.factor(.)))     ## returns 0,2) %>% as.factor  %>% as.numeric(as.character(.)) ## returns 1,2,3 (unexpected)
myfun <- function(x) as.numeric(as.character(x))
c(0,2) %>% as.factor  %>% myfun                       ## returns 0,2

有人可以解释一下差异结果吗?谢谢!

解决方法

管道运算符将管道对象作为以下函数的第一个参数传递。点仅在同一函数调用中才会更改此行为,这在详细信息部分的documentation中进行了解释。

所以您的第三行相当于

as.numeric(as.factor(c(0,1,2)),as.character(as.factor(c(0,2))))

在获得所需结果的同时

c(0,2) %>% as.factor %>% { as.numeric(as.character(.)) }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。