删除R中一列中包含非数字字符的行

use*_*459 15 r

在数据框中,列A应该是数字向量.

因此,如果列的条目具有任何非数字字符,我将删除相应的整行.

有没有人有办法解决吗?谢谢!

Bra*_*sen 18

将数据导入data.frame时,如果整个列不是数字,通常会将其转换为因子.考虑到这一点,您通常必须转换为字符然后转换为数字.

dat <- data.frame(A=c(letters[1:5],1:5))

str(dat)
'data.frame':   10 obs. of  1 variable:
 $ A: Factor w/ 10 levels "1","2","3","4",..: 6 7 8 9 10 1 2 3 4 5

as.numeric(as.character(dat$A))
 [1] NA NA NA NA NA  1  2  3  4  5
Warning message:
NAs introduced by coercion  
Run Code Online (Sandbox Code Playgroud)

请注意,它将字符转换为NA.结合这个:

dat <- dat[!is.na(as.numeric(as.character(dat$A))),]
Run Code Online (Sandbox Code Playgroud)

换句话说,那些行dat不是NA从因子转换为数字之后.

第二期:

> dat <- data.frame(A=c(letters[1:5],1:5))
> dat <- dat[!is.na(as.numeric(as.character(dat$A))),]
Warning message:
In `[.data.frame`(dat, !is.na(as.numeric(as.character(dat$A))),  :
  NAs introduced by coercion
> dat <- dat[!is.na(as.numeric(as.character(dat$A))),]
Error in dat$A : $ operator is invalid for atomic vectors
Run Code Online (Sandbox Code Playgroud)