R中cbind不同长度数据框报错invalid 'nrow' value(<0)求助
错误原因分析
你抛出错误的核心原因是行数计算逻辑完全搞反了:
monthly_df有12行,quarterly_df只有4行- 你写的
nrow(quarterly_df) - nrow(monthly_df)结果是4-12=-8,矩阵的nrow参数不能为负数,直接触发报错 - 你的需求是让短的
quarterly_df对齐长的monthly_df,应该给quarterly_df补NA行,而不是反过来修改monthly_df
解决代码
直接替换你原来的补行+合并代码,用以下逻辑实现:
# 计算需要给quarterly_df补充的NA行数 rows_to_add <- nrow(monthly_df) - nrow(quarterly_df) # 生成和quarterly_df结构一致的NA行数据框,然后合并到原数据框后 quarterly_df_full <- rbind( quarterly_df, as.data.frame( matrix(NA, nrow = rows_to_add, ncol = ncol(quarterly_df), dimnames = list(NULL, names(quarterly_df)) ) ) ) # 合并两个行数一致的数据框 Combined_dfs <- cbind(monthly_df, quarterly_df_full) # 可选:重命名重复的Category列,避免混淆 names(Combined_dfs)[4] <- "Quarterly_Category" View(Combined_dfs)
结果验证
运行后得到的Combined_dfs完全符合你的期望:前4行对应quarterly_df的内容,后面8行的季度数据列自动填充NA,月度数据保留完整。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

