首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >逻辑中引入的缺失值

逻辑中引入的缺失值
EN

Stack Overflow用户
提问于 2016-04-19 10:55:22
回答 1查看 70关注 0票数 1

我使用的是内建数据集(ggplot2),名为diamonds。在分配给dia1之后,我执行了以下脚本,以便根据它们的克拉对值进行分组。我收到了一条关于NAs被强制引入的消息。我无法理解这是如何发生的,正如is.na()向量等于零的总和所显示的那样。

代码语言:javascript
复制
#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通过强制引入

代码语言:javascript
复制
# check if there are any NAs in the data
sum(is.na(dia1$carat))
[1] 0

或者,当NAs向量被显式地强制到一个字符时,为什么没有引入dia1$carat,而在反向转换中引入了NAs

EN

Stack Overflow用户

回答已采纳

发布于 2016-04-19 11:42:55

问题是我们正在向if()提供NA,请尝试下面的示例:

代码语言:javascript
复制
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])使用临时变量
  • 使用白空间
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36716313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档