似乎创建一个dplyr::mutate()
的列不允许向量回收。为什么?
示例:
require(dplyr)
df <- data_frame(id = rep(1:5, each = 42), name = rep(letters[1:7], each = 6, times = 5))
现在:
df %>% mutate (tp = c(1:42)) #results in
Error in mutate_impl(.data, dots) :
Column `tp` must be length 210 (the number of rows) or one, not 42
但当然
df$tp <- c(1:42) #works
我的变异代码是错误的还是回收根本无法在mutate()
中起作用?
如果它有帮助,我使用dplyr
0.7.2与RStudio 1.0.153(Mac)
答案 0 :(得分:5)
你问了两个不同的问题:
它们[
mutate()
]中使用的向量值必须是长度1(然后才能被回收)或者与行数具有相同的长度。
答:如果不问dplyr
开发人员,可能无法回答。我推测他们在方便(一方面)和要求R的原始开发者(他们甚至允许不完整的回收,虽然有警告)。