r数据处理

R 报错:Column `x` must be length 1 or n(mutate 里长度不匹配)

mutate() 里新赋的值长度既不是 1 也不是行数 n。典型:mutate(df, ratio = c(1,2,3)) 直接塞了短向量,或者用了会返回多行的函数。

报错原文

Error: `x` must be size 2 or 1, not 3.

为什么会报这个错

mutate() 里新赋的值长度既不是 1 也不是行数 n。典型:mutate(df, ratio = c(1,2,3)) 直接塞了短向量,或者用了会返回多行的函数。

怎么解决

要么返回单个值(用 mean()、sum() 这类聚合),要么返回长度等于 n 的向量。需要汇总后回收用 summarise() + join,或者把结果包进 list()。

代码示例

# 错误
mutate(df, ratio = c(1, 2, 3))

# 正确:标量
df %>% mutate(avg = mean(x, na.rm = TRUE))

# 正确:等长向量
df %>% mutate(z = (x - mean(x)) / sd(x))

# 正确:汇总
summ <- df %>% group_by(g) %>% summarise(m = mean(x))
df %>% left_join(summ, by = "g")

同工具的其他报错

报错解决了,但方法还没搞懂?

报错只是表象。因果推断、面板数据、稳健性检验这些方法背后的逻辑,知识库里按「原理 × 直觉 × 代码」讲清楚了。

进入知识库 →