为什么我不能在df_tbl中改变这个字段?

时间:2017-03-17 19:35:05

标签: r dplyr

此代码:

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)

这是一个错误还是一个功能?

1 个答案:

答案 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)

它更简单,更直观。