RStudio中出现行数不匹配错误:矩阵填充逻辑相关技术求助
矩阵填充报错解决办法
问题背景
我要填充矩阵,步骤是先填首尾列,再处理中间和倒数第二列。填充逻辑:先看对应的slope.filter是不是1;如果不是,就检查相邻的slope.filter是否为1,是就把该点的point-filter设为1,否则设为0。
用的CSV文件显示有17行,但实际只有16行有效数据。
错误信息
报错提示:
Error in `[<-.data.frame`(`*tmp*`, , n, value = c(0, 0, 0, 0, 0, 0, 0, : replacement has 16 rows, data has 17触发报错的代码片段:
sorted.filter.no.duplicates[,c("row", "m.category", "sum")] <- list(NULL) Point.Filter.matrix <- data.frame(matrix(NA, nrow = obs, ncol = n)) Point.Filter <- sorted.filter.no.duplicates Point.Filter[is.na(Point.Filter)] <- 0 Point.Filter.matrix[,1] <- Point.Filter[,1]
问题原因&解决步骤
- 根本问题是行数不匹配:你创建的
Point.Filter.matrix有17行(因为obs的值是17),但Point.Filter[,1]只有16行数据,赋值时自然报错。 - 解决办法:
- 清理CSV无效行:把无效的那一行删掉,确保
sorted.filter.no.duplicates的行数是16。可以用代码sorted.filter.no.duplicates <- sorted.filter.no.duplicates[complete.cases(sorted.filter.no.duplicates), ]过滤含缺失值的无效行,或者手动指定行号删除。 - 同步矩阵行数:把
obs设为nrow(sorted.filter.no.duplicates),这样创建的Point.Filter.matrix行数就和Point.Filter完全一致了。 - 赋值前检查长度:确认
length(Point.Filter[,1])等于nrow(Point.Filter.matrix),避免再出现长度不匹配的问题。
- 清理CSV无效行:把无效的那一行删掉,确保
内容的提问来源于stack exchange,提问作者Geomurr
相关产品推荐
相关产品推荐

