【问题标题】:Function that takes two vectors and returns a matrix z=f(x,y) in R接受两个向量并在 R 中返回矩阵 z=f(x,y) 的函数
【发布时间】:2013-09-29 04:01:26
【问题描述】:

我正在尝试定义ab 的标量函数,其中ab 是向量,因此我可以使用persp(a,b,z) 制作z=f(X,y) 的曲面图。

问题是,我的函数的返回值是一个与我的向量a 长度相同的向量,而我期望的是一个矩阵。

有问题的函数是:

logver <- function(a, b, PARAM) {
  l <- (1 / (1 + exp(-a - b * PARAM)))
  return(l)
}

有人知道我在这里缺少什么吗?

【问题讨论】:

    标签: r function matrix


    【解决方案1】:

    如果您想要ab 的所有可能组合,请使用outer

    logver <- function(a, b, PARAM)
    {
        o <- outer(a, b*PARAM, `+`)
        1/(1 + exp(-o))
    }
    

    【讨论】:

      【解决方案2】:

      试试这个

      logover <- function(a, b, PARAM){
          L <- (1 / (1 + exp(-a-b*PARAM)))
          return(L)
      }
      

      在带有缩进的新行中键入return(L)。你不会得到任何错误。

      您要为 a、b 和 PARAM 传递什么值??

      【讨论】:

      • return(l) 部分在另一行带有缩进,由于某种原因,当我将其复制并粘贴到此处时,它一直被忽略。 PARAM 是一个常规数字,比如 2。a 和 b 是使用 seq(-10,10,by=0.01) 生成的
      • 问题是,我希望为 a 和 b 的每个值得到一个值;一个矩阵,而我得到一个向量(长度为 2001)。
      • 当你使用 seq(-10,10,by=0.01) 它返回两个值,因此返回 2001 个值。您需要决定可以在左侧或侧面跳过哪个值。您可以将其更改为 seq(-9.99,10,by=0.01) 或 seq(-10,9.99,by=0.01)。这只会给出 2000 个值。
      • 问题不在于函数作为参数的向量,问题是我得到一个向量作为输出值,而我想要一个矩阵,
      • 可以尝试return(matrix(L, 1000, 2)) 得到矩阵形式。或者您能否显示您期望的示例输出。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 2016-12-20
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      相关资源
      最近更新 更多