繁体   English   中英

编写对R中的向量进行运算的函数

[英]Writing a function that operates on a vector in R

我正在尝试在向量(t)上操作以下函数,但出现以下错误:

    rho.prime <- function(t, k=19000){
  for (i in seq(1,length(t))){
    if (abs(t[i]) <= k)
    { print(2*t[i])
      return(2*t[i])
    }
    else 
    {
      print(2*k*sign(t[i]))
      return(2*k*sign(t[i]))
    }
  }
}

这是rho.prime函数的描述: 在此处输入图片说明

问题是我对结果感到怀疑:

> t=c(1,3,5,7,10)
> t
[1]  1  3  5  7 10
> rho.prime(t,k)
[1] 2
[1] 2

您的函数可能如下所示:

rho<-function(t,k) ifelse(abs(t)<=k,t^2,(2*k*abs(t))-k^2)

感谢Flodel和Fernando,我可以提出以下解决方案:

rho.prime <- function(t, k=19000){
  out <- rep(NA, length(t))
  for (i in seq(1,length(t))){
    if (abs(t[i]) <= k)
    { print(2*t[i])
      out[i] <- 2*t[i] 
    }
    else 
    {
      print(2*k*sign(t[i]))
      out[i] <- 2*k*sign(t[i])
    }
  }
  return(out)
}

请让我知道这是否正确。

> t
[1]  1  3  5  7 10
> rho.prime(t,k)
[1] 2
[1] 6
[1] 10
[1] 14
[1] 20
[1]  2  6 10 14 20

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM