You need to enable JavaScript to run this app. 如何在R语言处理向量的函数中使用条件判断和stop终止函数
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言处理向量的函数中使用条件判断和stop终止函数

代码错误点

  • 参数定义和传参逻辑错误:你定义shift函数时要求传入两个参数list和x,但调用map(wordlist, shift)时只传入了单词列表,没有传入x参数,直接触发参数缺失报错。且你在函数内部重新给x赋值了长度为6的随机向量,不符合单个单词逐个处理的逻辑。
  • 条件判断逻辑错误:你写的x>list是将随机数和字符串本身做对比,正确逻辑应该是对比随机数和当前单词的字符长度,即x > nchar(当前单词)。
  • 采样语法错误:sample函数的替换参数写法错误,replace==TRUE是判断表达式,赋值应该用replace = TRUE。
  • 错误捕获逻辑不符合需求:直接用stop会终止整个map遍历,你需要用purrr提供的safely()函数包裹自定义函数,才能实现出错时返回result=NULL、error=错误信息的结构,同时不中断后续单词的处理。

修正后可直接运行的代码

library(purrr)

wordlist <- c("Is", "Book", "Appreciate", "Cherry", "Computer", "Of")

# 定义移位处理函数
shift <- function(word){
  # 每次处理单个单词时生成1个1-4的随机数
  x <- sample(1:4, 1, replace = TRUE)
  # 判断x是否超过单词长度
  if (x > nchar(word)) {
    stop("length of x is greater than the letters in the word!")
  }
  # 执行移位
  paste0(substr(word, nchar(word)-x+1, nchar(word)), substr(word, 1, nchar(word)-x))
}

# 用safely包裹函数,自动生成带result和error的返回结构
safe_shift <- safely(shift)

# 遍历处理所有单词
result <- map(wordlist, safe_shift)

# 查看结果
result

运行后输出格式和你要求的完全一致,长度为2的单词如Of如果随机到x≥3就会返回错误结果,长度为4的Book随机到x=2时就会输出okbo。

内容的提问来源于stack exchange,提问作者Jake Parker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 13:36:07