如何在 r 中修复:缺少参数“no”,没有默认值


在 R 中您可能遇到的错误是:

 Error in ifelse(df$team == "B", "Boston"): 
  argument "no" is missing, with no default

当您在 R 中使用ifelse()函数但忘记包含第三个参数来指定逻辑测试返回 false 时应返回的值时,就会出现此错误。

本教程准确解释了如何修复此错误。

如何重现错误

假设我们在 R 中有以下数据框:

 #create data frame
df <- data. frame (team=c('B', 'B', 'B', 'B', 'C', 'C', 'C', 'D'),
                 points=c(12, 22, 35, 34, 20, 28, 30, 18),
                 assists=c(4, 10, 11, 12, 12, 8, 6, 10))

#view data frame
df

  team points assists
1 B 12 4
2 B 22 10
3 B 35 11
4 B 34 12
5 C 20 12
6 C 28 8
7 C 30 6
8 D 18 10

现在假设我们尝试使用ifelse()函数创建一个名为city的新列,如果team列中的值等于“B”,则其中包含“Boston”:

 #attempt to create new column with team city
df$city <- ifelse(df$team == ' B ', ' Boston ')

Error in ifelse(df$team == "B", "Boston"): 
  argument "no" is missing, with no default

我们收到错误,因为我们未能向ifelse()函数提供第三个参数,该参数指定在team列中的值不等于“B”时应返回的值。

如何修复错误

修复此错误的方法是简单地向ifelse()函数提供第三个参数,该参数指定在team列中的值不等于“B”时应返回的值。

以下语法显示了如何执行此操作:

 #create new column with team city
df$city <- ifelse(df$team == ' B ', ' Boston ', ' Other ')

#view updated data frame
df

  team points assists city
1 B 12 4 Boston
2 B 22 10 Boston
3 B 35 11 Boston
4 B 34 12 Boston
5 C 20 12 Other
6 C 28 8 Other
7 C 30 6 Other
8 D 18 10 Other

请注意,这次我们没有收到任何错误,因为我们向ifelse()函数提供了第三个参数。

在此示例中,如果团队列中的值等于“B”,则ifelse()函数返回值“Boston”;如果团队列中的值是其他值,则 ifelse() 函数返回值“Other”。

其他资源

以下教程解释了如何修复 R 中的其他常见错误:

如何在 R 中修复:强制引入的 NA
如何在 R 中修复:索引越界
如何在 R 中修复:较长物体的长度不是较短物体长度的倍数
如何在 R 中修复:要替换的元素数量不是替换长度的倍数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注