这段代码:

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)


这是错误还是功能?

最佳答案

我不确定您在这里的意思。您创建了一个包含一列和3个观察值的data.frame,然后根据x进行分组,立即取消分组,最后使用mutate自身创建(替换)列x。我可能会缺少一些东西。如果运行以下命令,错误将消失:

foo <- data.frame(x = c(1, 2, 3))
foo <- foo %>%
       group_by(x) %>%
       ungroup() %>%
       mutate(x = foo[,'x'])


您应该在R中使用<--没有冒犯的意思,也许您熟悉Python。在StackOverflow上还有其他问题记录了类似的问题。但是,在这种情况下,我不确定我们是否可以谈论“错误”。 dplyr最好的部分是您可以传递对象而不必担心引号。为什么首先要使用该语法?去做:

foo <- data.frame(x = c(1, 2, 3))
foo <- foo %>%
       group_by(x) %>%
       ungroup() %>%
       mutate(x = x)


更简单,更直观。

关于r - 为什么我不能在df_tbl中更改此字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42865782/

10-12 18:00