此代码:
foo <- data.frame(x=c(1,2,3))
foo <- foo %>% group_by(x)
foo <- foo %>% ungroup() %>% mutate(x=foo[,'x'])
给出了这个错误:
Error: not compatible with STRSXP
虽然这条线有效:
foo <- foo %>% ungroup() %>% mutate(x=x)
这是一个错误还是一个功能?
答案 0 :(得分:1)
我不完全确定你的意思。您创建了一个data.frame,其中包含一列和3个观察值,然后根据x进行分组,立即取消分组,最后使用mutate创建(替换)列x。我可能会遗漏一些东西。如果运行以下命令,则错误消失:
foo <- data.frame(x = c(1, 2, 3))
foo <- foo %>%
group_by(x) %>%
ungroup() %>%
mutate(x = foo[,'x'])
你应该在R中使用<-
- 没有冒犯意味着,也许你熟悉Python。 StackOverflow还有其他问题记录了类似的问题。但是,在这种情况下,我不确定我们是否可以谈论一个&#34; bug&#34;。 dplyr
的最佳部分是您可以传递对象而不必担心引号。你为什么要首先使用这种语法?寻找:
foo <- data.frame(x = c(1, 2, 3))
foo <- foo %>%
group_by(x) %>%
ungroup() %>%
mutate(x = x)
它更简单,更直观。