R语言自定义函数创建咨询:根据字符前缀返回对应值的实现
修正后的R函数实现
你的代码存在几个明显问题,我帮你调整如下:
问题分析
- 错误使用了未定义的
input变量,函数里应该用参数名x来引用输入值 - 原逻辑是精确匹配固定字符串,不符合你“以某字母开头就返回对应结果”的需求
- 没有处理既不是A开头也不是D开头的默认情况
- 引号格式混乱,代码可读性差
修正后的代码(保留后缀版本)
test_df <- function(x) { # 统一转小写,实现大小写不敏感匹配 x_lower <- tolower(x) if (startsWith(x_lower, "a")) { # 提取前缀后的部分,拼接对应名称 suffix <- substring(x, 2) return(paste0("apple", suffix)) } else if (startsWith(x_lower, "d")) { suffix <- substring(x, 2) return(paste0("dragonfruit", suffix)) } else { # 处理其他未匹配的情况 return("未匹配到对应结果") } }
代码说明
tolower(x)把输入转为小写,这样输入"A75"、"aAbc"这类带大写的字符串也能正常匹配startsWith(x_lower, "a")专门判断字符串是否以指定前缀开头,完全符合你的需求substring(x, 2)提取输入字符串从第二个字符开始的内容,和水果名拼接后就能保留原参数的后缀(比如输入"d21"返回"dragonfruit21")- 添加了
else分支,避免未匹配时函数返回空值NULL
内容的提问来源于stack exchange,提问作者user21046947
相关产品推荐
相关产品推荐

