我正在读取数据,该数据包含112个变量和来自text.frame格式的文本文件的1000个观察值,并且只想选择列17:34和40,42,45和47中具有正数的那些行:91
用于评估从17到34的列,我使用了它,但它没有用。
mydata= subset(mydata,mydata[,17:34] > 0 )
如何解决问题,并参考我想以紧凑方式评估的所有这些列?
我也尝试使用如下所示的循环,但它确实有效,但我想知道是否有更简单的方法来编写它。
for (i in 17:34){
mydata= subset(mydata,mydata[,i] > 0 )
}
mydata= subset(mydata,mydata[,40] > 0 )
mydata= subset(mydata,mydata[,42] > 0 )
mydata= subset(mydata,mydata[,45] > 0 )
for (i in 47:91){
mydata= subset(mydata,mydata[,i] > 0 )
}
答案 0 :(得分:0)
我们可以在非正逻辑矩阵上使用Subdf <- mydata[!rowSums(mydata[,c(17:34,40, 42, 45, 47:91)]<=0),]
,取消它并对行进行子集化。
set.seed(24)
mydata <- matrix(sample(-5:40, 10*30, replace=TRUE), ncol=10)
Subdf <- mydata[!rowSums(mydata[, c(1, 5, 7)]<=0),]
Subdf[,c(1,5,7)]
使用一个可重复的小例子
{{1}}