我使用的是内建数据集(ggplot2),名为diamonds。在分配给dia1之后,我执行了以下脚本,以便根据它们的克拉对值进行分组。我收到了一条关于NAs被强制引入的消息。我无法理解这是如何发生的,正如is.na()向量等于零的总和所显示的那样。
#data
library(ggplot2)
dia1 <- diamonds
#logic
x<-1
dia1$carat<-as.character(dia1$carat)
for (i in 1:(length(dia1$carat))){
if (0<(as.numeric(dia1$carat[x]))&(as.numeric(dia1$carat[x]))<=1){
dia1$carat[x]<-"0-1"
}
if (1 < (as.numeric(dia1$carat[x]))&(as.numeric(dia1$carat[x])) <= 2){
dia1$carat[x]<-"1-2"
}
if (2<(as.numeric(dia1$carat[x]))&(as.numeric(dia1$carat[x]))<=3){
dia1$carat[x]<-"2-3"
}
if (3<(as.numeric(dia1$carat[x]))&(as.numeric(dia1$carat[x]))<=4){
dia1$carat[x]<-"3-4"
}
if (4<(as.numeric(dia1$carat[x]))&(as.numeric(dia1$carat[x]))<=5){
dia1$carat[x]<-"4-5"
}
x<-x+1
}if (0 < (as.numeric(dia1$caratx))和(as.numeric(dia1$caratx))中的错误,在需要真/假的情况下缺少值:警告消息: 1:强制引入的NAs 2: NAs通过强制引入
# check if there are any NAs in the data
sum(is.na(dia1$carat))
[1] 0或者,当NAs向量被显式地强制到一个字符时,为什么没有引入dia1$carat,而在反向转换中引入了NAs?
发布于 2016-04-19 11:42:55
问题是我们正在向if()提供NA,请尝试下面的示例:
if(NA > 1){1} else {2}错误的if (NA > 1) {:缺少值,其中真/假需要
在您的情况下,如果我们认为第1行克拉是"0.23",那么第一个if()语句在将其转换为number之后将正确地计算它,然后如果在范围内分配一个新的"0-1"值。然后,第二个if()试图将"0-1"转换为数字,所以我们得到了NA。
关于守则的其他建议:
cut()if(){...} else if(){...} ...x变量,我们可以用i代替。seq_along(),summary(),str()的文章as.numeric(dia1$carat[x])使用临时变量https://stackoverflow.com/questions/36716313
复制相似问题