You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mutate和case_when更新变量时出现异常错误求助

data.frame更新变量时长度不匹配错误的原因与解决

错误信息翻译

错误:mutate()列PAV存在问题。i PAV = case_when(tt == "Y" ~ PAV)。x tt == "Y" ~ PAV的长度必须为56或1,而不是112。

核心原因

你的df中PAV并非普通向量列,而是一个56行2列的矩阵(从结构定义里的.Dim = c(56L, 2L)可看出),总元素数为56×2=112。而tt是长度为56的向量,case_when要求条件判断的长度与右侧赋值的长度严格一致,两者长度不匹配触发了错误。

解决方法

方法1:提取矩阵指定列赋值

若只需用PAV矩阵中的某一列(比如第一列)更新,修改代码如下:

df <- df %>% 
  mutate(PAV = case_when(tt == "Y" ~ PAV[,1], TRUE ~ NA_character_))

(注:TRUE ~ NA_character_为tt!="Y"的行设置默认值,可按需调整)

方法2:拆分矩阵为独立列

若需保留PAV矩阵的两列数据,先将其拆为data.frame的单独列再操作:

df <- df %>% 
  mutate(PAV_col1 = PAV[,1], PAV_col2 = PAV[,2]) %>% 
  select(-PAV) # 删除原矩阵列

内容的提问来源于stack exchange,提问作者Stataq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 00:36:28