我试图在矢量(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
答案 0 :(得分:4)
您的功能可能如下所示:
rho<-function(t,k) ifelse(abs(t)<=k,t^2,(2*k*abs(t))-k^2)
答案 1 :(得分:0)
感谢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