R中的基本自定义函数没有定义内部对象[关闭]

Posted

技术标签:

【中文标题】R中的基本自定义函数没有定义内部对象[关闭]【英文标题】:Basic custom function in R does not define the internal objects [closed] 【发布时间】:2013-01-09 02:47:01 【问题描述】:

我正在尝试创建一个函数来自动化一些基本计算。然而,它似乎没有定义最终的mat 对象,即使嵌入到函数中的代码在放置在它之外时也能完美运行。显然我犯了一些基本错误,但我不知道出了什么问题。

代码是:

my_f = function(covs, B, k)  

  ### empty matrix

  coeff <- paste("b_", covs, sep="")
  se <- paste("se_", covs, sep="")
  mat <- matrix(nrow=B, ncol=2+2*k, dimnames=list(c(), c("sim","N",coeff,se)))
  mat[,"sim"] <- seq(1:B) 

 

 my_f(covs=list("x1", "x2"), B=50, k=2)

感谢您的帮助!

【问题讨论】:

在什么情况下不起作用?你期待什么输出而不是它给你什么? @joran:确实最后一行会破坏函数,但它会准确返回seq(1:B),因为这是[&lt;- 将返回的内容。 @Dwin,是的,但除非您将 my_f(...) 分配给某些东西,否则它似乎不会返回。比较 my_f(covs=list("x1", "x2"), B=50, k=2)x &lt;- my_f(covs=list("x1", "x2"), B=50, k=2);x 鉴于您对以下答案的评论,您是否要将 mat 分配给父(全局或其他)环境? @DWin:您认为seq(2:B)2:B 不同(或任何非1:X 形式的向量,其中X &gt; 0)-seq给定一个参数,使用向量的 length,然后返回一个长度为 1 的向量。因此,由于1:B 的长度为Bseq(1:B) 返回1:B 【参考方案1】:

虽然不清楚您希望它返回什么,但我认为您忘记了函数末尾的 return(mat) 行。

由于当前定义了myf,它将只返回最后评估的东西m[, "sim"],它是一个向量(因此忘记了矩阵的其余部分)。

您还必须将my_f 的结果分配给一个变量(可以是,但不一定是,也称为mat)。

mat <- my_f(covs=list("x1", "x2"), B=50, k=2)

【讨论】:

谢谢!你能解释一下如何定义 mat 对象而不必在 R 控制台上显示它吗?我想稍后再调用它 mat 在函数中定义时,它只存在于该函数的范围中。这意味着函数完成的那一刻,mat 消失了——除非它返回 mat,并且函数的返回值被分配给一个新变量(也可以称为 mat ) 如果您不想在控制台中看到它,请使用 invisible(mat) 而不是 return(mat) 并将函数调用的结果分配给某物。 (这也会产生不打印值的效果。) 感谢大家,你们让我的生活变得轻松多了! :)

以上是关于R中的基本自定义函数没有定义内部对象[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

JS自定义对象,正则表达式,JQuery中的一些知识点

将自定义对象存储到 Android 内部存储的最佳方式?

JavaScript中的内部对象宿主对象自定义对象

如何在flutter中将具有文档ID的自定义对象设置为firestore中的集合?

08.vue-charp-08 自定义指令

类(对象)的定义 自定义对象构造函数