R语言mutate()中管道运算符失效,报'kolokasi'未找到错误求助
错误原因及解决办法
错误原因
管道运算符%>%的核心逻辑是将前一步的输出作为后一步函数的第一个参数自动传入。你的代码中:
kolokasi <- rbind(kolokasi_gay, kolokasi_lesbian) %>% select(1:5) %>% mutate(kolokasi, logdice = 14 + log2((2*w1w2)/(w1+w2)))
在链式调用的最后一步,你手动给mutate传入了第一个参数kolokasi——但此时这个变量还未完成赋值(整行代码的目的就是把结果赋值给kolokasi),R自然找不到这个对象,因此抛出object 'kolokasi' not found的错误。
而分步运行时,你先执行了kolokasi <- rbind(...) %>% select(1:5),此时kolokasi已经作为已存在的dataframe被存储在环境中,后续调用mutate(kolokasi, ...)时,第一个参数是已存在的变量,所以能正常执行。
解决办法
去掉mutate中的第一个参数kolokasi,让管道自动将前一步的dataframe传入mutate即可:
kolokasi <- rbind(kolokasi_gay, kolokasi_lesbian) %>% select(1:5) %>% mutate(logdice = 14 + log2((2*w1w2)/(w1+w2)))
如果你习惯显式指代前一步的结果,也可以用.代替(效果完全一致):
kolokasi <- rbind(kolokasi_gay, kolokasi_lesbian) %>% select(1:5) %>% mutate(., logdice = 14 + log2((2*w1w2)/(w1+w2)))
内容的提问来源于stack exchange,提问作者pindakazen
相关产品推荐
相关产品推荐

