Select rows of a data.frame that contain only numb

2019-02-18 15:35发布

问题:

How to select only the rows that contain a number in column b.

a <- c(1,5,3,1,-8,6,-1)
b <- c(4,-2,1,0,"c",2,"DX")

df <- data.frame(a,b)
df

#    a  b
# 1  1  4
# 2  5 -2
# 3  3  1
# 4  1  0
# 5 -8  c
# 6  6  2
# 7 -1  DX

The output should look like this:

#    a  b
# 1  1  4
# 2  5 -2
# 3  3  1
# 4  1  0
# 5  6  2

回答1:

You could use grep:

df[grep("[[:digit:]]", df$b), ]
#  a  b
#1 1  4
#2 5 -2
#3 3  1
#4 1  0
#6 6  2


回答2:

This should be faster (it doesn't use regex)

df[!is.na(as.numeric(df$b)), ]