【问题标题】:Apply a seq() in R function在 R 函数中应用 seq()
【发布时间】:2017-02-02 21:33:04
【问题描述】:

我编写了一个函数,但我想知道如何通过应用seq(0, 1.5, by =.1) 代替a 来重复函数?

这是我的 R 代码:

n1 = 20
n2 = 20
T1 = -1.26491106 
df = 38
a = "wide" 
nb <- (n1*n2)/(n1+n2)
a = c(medium = 1/2, wide = sqrt(2)/2, verywide = 1)[[a]]


OO <- function(t,nb,df,a){

integrand <- function(g){

  (1+nb*g)^(-1/2)*(1+t^2/(df*(1+nb*g)))^(-(df+1)/2)*(2*pi)^(-1/2)*g^(-3/2)*exp(-a^2/(2*g))
}

num <- a*integrate(integrand,0,Inf)$value

denom <- (1+t^2/df)^(-(df+1)/2)

return(num/denom)
}

OO(t=T1,nb=nb,df=df,a=a)  ## HERE IS THE FUNCTION ##

【问题讨论】:

标签: r function for-loop plot


【解决方案1】:

不确定a的初始设置是什么意思,但这里是如何在序列上应用函数,

sapply(seq(0.1, 1.5, by =.1), function(a) OO(t=T1,nb=nb,df=df,a=a))

【讨论】:

  • gsun,现在已经通过sapply OO() 生成了一个向量,如果我们单独输入seq(0.1, 1.5, by =.1) 一次一个数字,则每个元素都是OO() 的答案?跨度>
  • 是的。这与在循环中一次输入一个相同。从我的角度来看,我相信 apply 函数会比循环更快,而且一行代码更干净。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
相关资源
最近更新 更多