首页 > 解决方案 > 逻辑运算符删除 data.frame 中的行

问题描述

这是我的data.frame:

question<-structure(list(`250` = c(-3.87200118673366, -4.47389106649744, 
-4.02280403506916, -4.19939802488332, -3.47743162588758, -4.89573738026802, 
-4.67605723223933, -3.78092762173933, -4.65950182800728, -4.83238291772638, 
-3.97251777639614, -4.28896861578236, -4.42543621105522, -5.26459507261954, 
-5.48563208586562, -3.93219021632686, -4.20185453698728, -4.28893346745049, 
-4.84087532934354, -4.43334629253726), `240` = c(-3.67664785721957, 
-4.36857778193119, -4.53173189323847, -4.11448449133499, -3.47309560544797, 
-4.75442464824431, -4.56424082926539, -3.70741695338066, -4.56826143152892, 
-4.73286393846991, -3.84190501038773, -4.21937933512555, -4.28313143605638, 
-5.15938999426321, -5.35322512806588, -3.87316449536556, -4.13664815780907, 
-4.17728662762184, -4.76003519661876, -4.30226483962103), `220` = c(-3.73335966390066, 
-4.12358947406863, -4.04950661748222, -4.29735499305424, -3.96996086894599, 
-4.3284782033696, -4.68457186879659, -3.57176735993056, -4.40302938503425, 
-4.56329464251047, -3.68821737783307, -3.78875939766928, -3.92548323138541, 
-4.89985862049287, -5.00592488673845, -3.81537593836129, -3.95823405254188, 
-4.16260186539192, -4.55076655831127, -4.00294607619528), `200` = c(-3.5249674839272, 
-4.26085188087975, -4.43584889325732, -3.98109371668921, -4.2347387328189, 
-4.21071896935046, -4.56522883373854, -4.13904788710239, -4.2093256499907, 
-4.22698617533395, -3.67857742075118, -4.01883885182368, -4.00709172070593, 
-4.73012030816904, -4.93925345541767, -3.53689738502108, -4.03008660393827, 
-4.02178872039943, -4.5974269672843, -3.99382982312707)), row.names = c("A", 
"B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", 
"O", "P", "Q", "R", "S", "T"), class = "data.frame")

使用逻辑运算符question > -5 & question < -4我想删除符合此条件的行:question > -5 & question < -4

我做了以下但它不起作用,这很奇怪:

new.question<-question[question > -5 & question < -4,]

实际上,此代码不会消除指定条件下的行,此外还有我希望不会出现的 "NA" 。

我想保留逻辑运算符,不使用其他功能或包。

有什么帮助吗?

标签: r

解决方案


我们可以在中使用矢量化选项base R

question[!Reduce(`|`, lapply(question, function(x) x > -5 & x < -4)),]
#        250       240       220       200
#A -3.872001 -3.676648 -3.733360 -3.524967
#K -3.972518 -3.841905 -3.688217 -3.678577
#P -3.932190 -3.873164 -3.815376 -3.536897

推荐阅读