编写返回布尔值的for循环函数报错:对象'n'未找到
问题解决:R函数报错
object 'n' not found 错误原因
你的函数代码没有用大括号{}包裹函数体,R会默认只把函数定义后的第一行代码n <- length(v)当作函数的执行内容,后续的homeless <- rep(FALSE, n)等代码会在全局环境中运行,这时候n还没被定义,就会抛出object 'n' not found的错误。
修正后的循环版代码
给函数体加上大括号,同时调整缩进让代码更清晰:
flag_homeless <- function(v) { n <- length(v) homeless <- rep(FALSE, n) for (i in 1:n) { if (v[i] == "No Permanent Address") { homeless[i] <- TRUE } } return(homeless) }
更高效的R风格写法
在R中不需要用循环处理这类向量判断,直接用向量化操作就能一步得到结果,代码更简洁高效:
flag_homeless <- function(v) { v == "No Permanent Address" }
这个写法会直接返回一个和输入向量v等长的布尔向量,完全满足需求。
内容的提问来源于stack exchange,提问作者Jason Barajas
相关产品推荐
相关产品推荐

