使用mutate和case_when更新变量时出现异常错误求助
data.frame更新变量时长度不匹配错误的原因与解决
错误信息翻译
错误:
mutate()列PAV存在问题。iPAV = case_when(tt == "Y" ~ PAV)。xtt == "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
相关产品推荐
相关产品推荐

