如果城市列单元格为空,则R中的Grep将删除整行

meg*_*egv 2 grep r dataframe

我有以下R数据帧mydata

                       session      first     last            city
1  9cf571c8faa67cad2aa9ff41f3a26e38    cat+rat   biddix          fresno
2  e30f853d4e54604fd62858badb68113a      caleb     amos                
3  2ad41134cc285bcc06892fd68a471cd7 daniel+joe  folkers                
4  2ad41134cc285bcc06892fd68a471cd7 daniel+joe  folkers                
5  63a5e839510a647c1ff3b8aed684c2a5    charles   pierce           flint
6  691df47f2df12f14f000f9a17d1cc40e          j    franz prescott+valley
7  691df47f2df12f14f000f9a17d1cc40e          j    franz prescott+valley
8  b3a1476aa37ae4b799495256324a8d3d   carr%ie% mascorro            brea
9  bd9f1404b313415e7e7b8769376d2705       fred  morales       las+vegas
10 b50a610292803dc302f24ae507ea853a     aurora      lee                
11 fb74940e6feb0dc61a1b4d09fcbbcb37     andrew    price       yorkville
Run Code Online (Sandbox Code Playgroud)

删除城市空白的所有行的正确代码是什么?

Ben*_*ker 7

也许

subset(mydata,city!="")
Run Code Online (Sandbox Code Playgroud)

?这假定city列的存储方式使得空白是零长度字符串.如果他们可能是空白,那么就像

grep("^[[:space:]]*$",mydata$city,invert=TRUE)
Run Code Online (Sandbox Code Playgroud)

会找到你想要的元素.既然你grepl没有invert参数可以使用(编辑:感谢@ JoshO'Brien)

subset(mydata,!grepl("^[[:space:]]*$",city))
Run Code Online (Sandbox Code Playgroud)

(没有给出可重现的例子,所以这些都没有经过测试.)

  • `!grepl()`是一个相当不错的临时搭建`invert`;) (2认同)