【问题标题】:argument "no" is missing, with no default in R缺少参数“no”,在 R 中没有默认值
【发布时间】:2021-07-30 08:14:43
【问题描述】:

我一直在尝试创建一个新变量,该变量根据来自另一个变量的数据对参与者是否患有糖尿病进行分类,但我不断收到消息: ifelse(glyhb >= 7, "no") 中的错误: 缺少参数“no”,没有默认值。

例如,如果糖化血红蛋白 (glyhb) > 7.0,则诊断为糖尿病。

我试过这段代码,但它不起作用:

Diabetes$diabetes <- with(Diabetes, ifelse(glyhb > 7, "yes", ifelse(glyhb >=7, "no")))

我想知道我哪里出错了?

【问题讨论】:

  • 第二个ifelse没有else选项。试试Diabetes$diabetes &lt;- with(Diabetes, ifelse(glyhb &gt; 7, "yes", ifelse(glyhb &gt;=7, "no", NA)))。你还需要两个 ifelse 吗? Diabetes$diabetes &lt;- with(Diabetes, ifelse(glyhb &gt; 7, "yes", "no")) 可以吗?

标签: r variables


【解决方案1】:

你确定glyhb &gt;=7 是真的吗?我认为没有糖尿病应该是glyhb &lt;=7

ifelse https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/ifelse

用法:ifelse(test, yes, no)

ifelse 返回一个与 test 具有相同形状的值,其中填充了从是或否中选择的元素,具体取决于 test 的元素是 TRUE 还是 FALSE。

如果我的想法是正确的,那么看这个例子:

# fake data
Diabetes <- structure(list(glynb = 1:20), row.names = c(NA, -20L), class = c("tbl_df", "tbl", "data.frame"))

# base R:
Diabetes$has_diabetes <- ifelse(Diabetes$glynb > 7, "yes", "no")

# dplyr:
library(dplyr)
Diabetes %>% 
  mutate(has_diabetes = ifelse(glynb > 7, "yes", "no"))

输出:

   glynb has_diabetes
   <int> <chr>       
 1     1 no          
 2     2 no          
 3     3 no          
 4     4 no          
 5     5 no          
 6     6 no          
 7     7 no          
 8     8 yes         
 9     9 yes         
10    10 yes         
11    11 yes         
12    12 yes         
13    13 yes         
14    14 yes         
15    15 yes         
16    16 yes         
17    17 yes         
18    18 yes         
19    19 yes         
20    20 yes     

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 2020-01-14
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多