如何使用循环删除R中所有具有负值的行

如何使用循环删除R中所有具有负值的行,r,loops,subset,R,Loops,Subset,我是个新手。我有一个笨重的数据框,我想减少它,以便只保留没有负数的观察值(行)。这就是我被困的地方。这样每次都会创建一个空值,而不是一个经过修剪的数据帧 mydata=for (i in names(df)) { subset(df, df[[ paste(i)]]>=0) } 您不需要为此循环:) DF=structure(list(ID=c(1,1,1,-1,2),Items=c(“D”,“A”,“A”), “A”,“B”,序列=c(1,2,-2,1,2

我是个新手。我有一个笨重的数据框,我想减少它,以便只保留没有负数的观察值(行)。这就是我被困的地方。这样每次都会创建一个空值,而不是一个经过修剪的数据帧

    mydata=for (i in names(df)) {
      subset(df, df[[ paste(i)]]>=0) 
    }

您不需要为此循环:)

DF=structure(list(ID=c(1,1,1,-1,2),Items=c(“D”,“A”,“A”),
“A”,“B”,序列=c(1,2,-2,1,2)),名称=c(“ID”,“项目”,
“Sequence”,row.names=c(NA,-5L),class=“data.frame”)
DF
#ID项目序列
#1d1
#2 1 A 2
#3 1 A-2
#4-1 A 1
#5 2 B 2

new_DF=DF[应用(DF纯矢量化解决方案如何:

DF[!rowSums(DF < 0), ]
#  ID Items Sequence
#1  1     D        1
#2  1     A        2
#5  2     B        2

解释

比较
DF<0
为data.frame中的每个值提供
TRUE/FALSE

DF < 0
#         ID Items Sequence
# [1,] FALSE FALSE    FALSE
# [2,] FALSE FALSE    FALSE
# [3,] FALSE FALSE     TRUE
# [4,]  TRUE FALSE    FALSE
# [5,] FALSE FALSE    FALSE
所以我们可以使用这个向量来子集data.frame。但是,因为我们希望它的值都是正的(即rowSums==0),所以我们对过滤器求反

DF[!rowSums(DF < 0), ]
DF[!行和(DF<0),]

你需要一个循环来做到这一点吗???也许
mydata@symbolx没问题。这经常发生在我们所有人身上(也许不会发生在akrun:-D)。不,你从来没见过他来。他就像一个忍者:)谢谢!@RHertel它工作得很好,而且很简单!很亲切。@RHertel-我在发布后看到了你的评论,我发誓!谢谢,我将
应用程序与其他
lappy
mappy
等捆绑在一起
DF < 0
#         ID Items Sequence
# [1,] FALSE FALSE    FALSE
# [2,] FALSE FALSE    FALSE
# [3,] FALSE FALSE     TRUE
# [4,]  TRUE FALSE    FALSE
# [5,] FALSE FALSE    FALSE
rowSums(DF<0)
# [1] 0 0 1 1 0
DF[!rowSums(DF < 0), ]