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)