如何使用循环删除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), ]