R 用于测试数据帧中的行是否不包含给定元素的函数

R 用于测试数据帧中的行是否不包含给定元素的函数,r,R,我有一个像 a <- c(2, 3, 4) b <- c(5, 4, 3) c <- c(2, 7, 9) df <- data.frame(a, b, c) df # a b c # 1 2 5 2 # 2 3 4 7 # 3 4 3 9 我想返回没有数字2的行,在我的示例中,它只是第二行。使用行和或列和: # data a <- c(2, 3, 4) b <- c(5, 4, 3) c <- c(2, 7, 9) df <- data.

我有一个像

a <- c(2, 3, 4)
b <- c(5, 4, 3)
c <- c(2, 7, 9)
df <- data.frame(a, b, c)

df
#   a b c
# 1 2 5 2
# 2 3 4 7
# 3 4 3 9

我想返回没有数字2的行,在我的示例中,它只是第二行。

使用行和或列和:

# data
a <- c(2, 3, 4)
b <- c(5, 4, 3)
c <- c(2, 7, 9)
df <- data.frame(a, b, c)

df
#   a b c
# 1 2 5 2
# 2 3 4 7
# 3 4 3 9


# get rows with no 2
df[ rowSums(df == 2, na.rm = TRUE) == 0, ]
#   a b c
# 2 3 4 7
# 3 4 3 9

# get columns with no 2
df[ , colSums(df == 2, na.rm = TRUE) == 0, drop = FALSE ]
#   b
# 1 5
# 2 4
# 3 3

使用行和或列和:

# data
a <- c(2, 3, 4)
b <- c(5, 4, 3)
c <- c(2, 7, 9)
df <- data.frame(a, b, c)

df
#   a b c
# 1 2 5 2
# 2 3 4 7
# 3 4 3 9


# get rows with no 2
df[ rowSums(df == 2, na.rm = TRUE) == 0, ]
#   a b c
# 2 3 4 7
# 3 4 3 9

# get columns with no 2
df[ , colSums(df == 2, na.rm = TRUE) == 0, drop = FALSE ]
#   b
# 1 5
# 2 4
# 3 3
我们还可以使用Reduce with==来获取行

df[!Reduce(`|`, lapply(df, `==`, 2)),]
#  a b c
#2 3 4 7
#3 4 3 9
使用lappy选择列的任意值

df[!sapply(df, function(x) any(x== 2))]
#  b
#1 5
#2 4
#3 3
我们还可以使用Reduce with==来获取行

df[!Reduce(`|`, lapply(df, `==`, 2)),]
#  a b c
#2 3 4 7
#3 4 3 9
使用lappy选择列的任意值

df[!sapply(df, function(x) any(x== 2))]
#  b
#1 5
#2 4
#3 3

下面是我使用一些集合函数的解决方案。首先,两人的立场在哪里

is_two <- apply(df, 1, is.element, 2)

      [,1]  [,2]  [,3]
[1,]  TRUE FALSE FALSE
[2,] FALSE FALSE FALSE
[3,]  TRUE FALSE FALSE
现在,哪些行都是假的

no_twos <- apply(!is_two, 1, all)
df[no_twos,]
 a b c
2 3 4 7

下面是我使用一些集合函数的解决方案。首先,两人的立场在哪里

is_two <- apply(df, 1, is.element, 2)

      [,1]  [,2]  [,3]
[1,]  TRUE FALSE FALSE
[2,] FALSE FALSE FALSE
[3,]  TRUE FALSE FALSE
现在,哪些行都是假的

no_twos <- apply(!is_two, 1, all)
df[no_twos,]
 a b c
2 3 4 7

您的意思是输出应该是第二行和第三行?您的解决方案是针对列,我希望数据帧的行不包含2,在示例中是第二行。您的意思是输出应该是第二行和第三行?您的解决方案是针对列,我希望数据帧的行不包含2,在示例中是第二行。