r - 改进 if else 语句

标签 r if-statement

我在 R 中有以下函数。它工作正常,但是,我认为这一定是运行该函数的更好方法。

values <- c("a","b")


print <- function(values){
  
  size <- length(values)

  if (size == 1) {
  
  final <- values[1]
  
}else if(size == 2){
  
  final <- paste0(values[2], " and ", values[1])
}else if(size == 3){
  
  final <- paste0(values[3], " and ",values[2], " and ", values[1])
  
}
  return(final)
}
print(values)

用户可以更改值的大小,因此如果他选择values <- c("a","b", "c")该函数将在最后一个条件下运行。然而,最后一个条件在艺术中等于第二个条件加上一些新的东西。可以创建一个 if 语句,或者在这些行中使用前面的条件。像这样的东西:

values <- c("a","b", "c")


print <- function(values){
  
  size <- length(values)

  if (size == 1) {
  
  final <- values[1]
  
}else if(size == 2){
  
  final <- paste0(values[2], " and ", final )
}else if(size == 3){
  
  final <- paste0(values[3], " and ",final )
  
}
  return(final)
}
print(values)

最佳答案

试试这个,它会颠倒输入向量的顺序并在之间粘贴“and”:

newfun <- function(x){
  ifelse(length(x)>1, paste(rev(x), collapse = " and "), x)
}

输出:

newfun(letters[1])
 # [1] "a"

newfun(letters[1:2])]
 # [1] "b and a"

# and so on...

newfun(letters[1:5])
 # [1] "e and d and c and b and a"

针对您的函数进行测试,看看它是否相同:

all.equal(print(letters[1:3]), 
          newfun(letters[1:3]))
# [1] TRUE

我还强烈警告命名 R 中已经固有的用户定义函数名称(即 print() 已经是 R 中的函数。

关于r - 改进 if else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72141914/

相关文章:

javascript - 如何将带有嵌套 if 语句的 if-else 语句转换为一个三元语句?

mysql - MySQL 中的 IF 和 Case 语句

c - 循环在我的 C 代码中不起作用

r - 如何用 r 中的序列替换替换可变数量的占位符?

r - 异方差残差图与 Pinhiero 和 Bates 中显示的图不匹配

r - 如何计算一个字符在一行中出现的次数

python - 如何通过 Python 中的 input() 函数为无法转换为整数的字符串提供无效消息?

string - R中的密码生成器功能

R哪个函数运行另一个函数

if 语句中无法识别 Python 变量