R语言自定义matrix函数调用报unused argument错误怎么解决
问题原因
你定义的自定义函数名和R内置的矩阵生成函数matrix重名,触发了作用域优先级问题:R执行函数时会优先调用当前工作环境中定义的函数,而非同名的内置函数。你自定义的matrix仅声明了a、b两个位置参数,没有设计ncol参数,因此函数内部调用matrix(a,ncol=b)时实际调用的是你自己写的这个自定义函数,自然会报ncol是未使用参数的错误。
修复方案
方案1:修改自定义函数名,避免和内置函数重名(最推荐)
# 重命名自定义函数,不要和R内置函数重名 my_matrix <- function(a,b) { matrix(a, ncol = b) } my_matrix(10, 10)
方案2:如果需要保留matrix作为自定义函数名,调用时显式指定使用base包的内置矩阵生成函数
matrix <- function(a,b) { # 加base::前缀强制调用内置的matrix函数 base::matrix(a, ncol = b) } matrix(10, 10)
提示:日常写R代码时尽量避免自定义函数和R核心内置函数重名,否则很容易出现这类不容易排查的作用域冲突问题。
内容的提问来源于stack exchange,提问作者rayner perdana
相关产品推荐
相关产品推荐

