为什么我不能在df_tbl中改变这个字段?
问题描述:
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)
这是一个错误或功能?
答
我不完全确定你在这里的意思。您创建了一个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的其他问题记录类似的问题。但是,在这种情况下,我不确定我们可以谈论“bug”。 dplyr
最好的部分是你可以传递对象而不用担心引号。为什么你会首先使用这种语法?寻找:
foo <- data.frame(x = c(1, 2, 3))
foo <- foo %>%
group_by(x) %>%
ungroup() %>%
mutate(x = x)
它更简单,更直观。
这是从一个实际的例子来简化显示错误。这段代码不是很有用,但是它的代码是。 – dfrankow
另一种思考这个问题的方法是:为什么分组和取消分组会产生奇怪的错误? (同样,实际的代码有更多的东西是有道理的,我使用“奇怪的语法”,因为所选择的列名是从一个变量中设置的。) – dfrankow