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
请注意,它将字符转换为 NA . 结合这个:
dat <- dat[!is.na(as.numeric(as.character(dat$A))),]
换句话说, 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
2 回答
将数据导入data.frame时,如果整个列不是数字,通常会将其转换为因子 . 考虑到这一点,您通常必须转换为字符然后转换为数字 .
请注意,它将字符转换为
NA
. 结合这个:换句话说,
dat
的行在从因子转换为数字后不是NA
.第二期:
或者使用@Brandon Bertelsen的示例数据