如何正确使用sweep函数比较两个dataframe首行并满足指定判断规则
问题定位
- 判断条件不符合需求:你当前使用的
x <= y逻辑,会在x等于y时返回TRUE,和你要求的「x大于、等于y时都返回FALSE」的规则冲突。 - sweep维度参数错误:你指定的
MARGIN=1是按行循环匹配统计量,对于两个同列数的单行数据,应该设置MARGIN=2按列对应匹配。
修正代码
调整sweep参数和逻辑
sweep(as.matrix(gap_size_uncut[1,]), 2, as.matrix(NA_Count[1,]), FUN = function(x,y) x < y, check.margin = FALSE)
更简洁的替代方案
两个单行数据长度完全一致,不需要调用sweep,直接做向量运算即可:
# 返回带列名的矩阵结果 matrix(gap_size_uncut[1,] < NA_Count[1,], nrow = 1, dimnames = list(NULL, colvec))
结果验证
修正后返回结果为:FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
完全符合「仅x小于y时返回TRUE,大于、等于均返回FALSE」的需求。
内容的提问来源于stack exchange,提问作者LGe
相关产品推荐
相关产品推荐

