如何使用rpois(2,100)为整数对(x, y)完成随机赋值
错误原因说明
你写的代码有3处不符合R语法规则的问题:
- R原生不支持
(x, y) = xxx这类多变量同步解构赋值的写法,这类语法是Python、JS等语言的特性,R无法识别 - 函数定义缺少名称,
=function(...)属于非法写法,需要给函数指定命名 - R的
return()仅支持返回1个R对象,不能直接传入多个逗号分隔的变量返回
原生R实现方案(无需额外安装包)
方案1:封装返回随机对的函数,手动提取赋值
适合不想让函数直接修改全局变量的场景:
# 定义生成泊松随机数对的函数 gen_pois_xy <- function(lambda = 100) { res <- rpois(2, lambda) return(c(x = res[1], y = res[2])) } # 调用后赋值给x、y xy_pair <- gen_pois_xy() x <- xy_pair[1] y <- xy_pair[2]
方案2:调用函数直接更新全局环境的x、y
适合需要频繁更新x、y做测试的场景,调用一次即可完成两个变量的更新:
# 定义直接更新全局x、y的函数 update_pois_xy <- function(lambda = 100) { res <- rpois(2, lambda) # 直接给全局环境的x、y赋值 assign("x", res[1], envir = .GlobalEnv) assign("y", res[2], envir = .GlobalEnv) } # 调用后当前环境的x、y就会被更新为新的随机值 update_pois_xy()
内容的提问来源于stack exchange,提问作者Jose Moquiambo
相关产品推荐
相关产品推荐

