比较具有扫描功能的行 - 如何正确执行?
compare rows with sweep function - how to do it properly?
只是尝试使用“扫描”比较两个数据帧的第一行。不幸的是,函数 returns 只有 FALSE,如果满足条件,则 x 大于 y。如果 x 等于 y,我想要相同的 FALSE 输出。不幸的是,我的尝试没有奏效,我不明白为什么。如果 x 等于 y,仍然存在 TRUE,但应该存在 FALSE。请帮助:
colvec <- c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m")
gap_size_uncut <- as.data.frame(rbind(c(6,1,5,1,1,1,4,5,26,3,35,23,3)))
NA_Count <- as.data.frame(rbind(c(3,6,5,7,1,3,4,6,1,0,1,1,3)))
colnames(gap_size_uncut) <- colvec
colnames(NA_Count) <- colvec
sweep(as.matrix(gap_size_uncut[1,]), 1, as.matrix(NA_Count[1,]),
FUN = function(x,y) (x <= y ),
check.margin = FALSE)
NA_Count
gap_size_uncut
将 sweep
与 MARGIN = 2
结合使用。
sweep(gap_size_uncut[1,], 2, NA_Count[1,], `<=`)
# a b c d e f g h i j k l m
#1 FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE
如果尺寸相同,您可以直接比较两个数据框而无需 sweep
。
gap_size_uncut <= NA_Count
# a b c d e f g h i j k l m
#[1,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE
只是尝试使用“扫描”比较两个数据帧的第一行。不幸的是,函数 returns 只有 FALSE,如果满足条件,则 x 大于 y。如果 x 等于 y,我想要相同的 FALSE 输出。不幸的是,我的尝试没有奏效,我不明白为什么。如果 x 等于 y,仍然存在 TRUE,但应该存在 FALSE。请帮助:
colvec <- c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m")
gap_size_uncut <- as.data.frame(rbind(c(6,1,5,1,1,1,4,5,26,3,35,23,3)))
NA_Count <- as.data.frame(rbind(c(3,6,5,7,1,3,4,6,1,0,1,1,3)))
colnames(gap_size_uncut) <- colvec
colnames(NA_Count) <- colvec
sweep(as.matrix(gap_size_uncut[1,]), 1, as.matrix(NA_Count[1,]),
FUN = function(x,y) (x <= y ),
check.margin = FALSE)
NA_Count
gap_size_uncut
将 sweep
与 MARGIN = 2
结合使用。
sweep(gap_size_uncut[1,], 2, NA_Count[1,], `<=`)
# a b c d e f g h i j k l m
#1 FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE
如果尺寸相同,您可以直接比较两个数据框而无需 sweep
。
gap_size_uncut <= NA_Count
# a b c d e f g h i j k l m
#[1,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE