R 如何使代码更简单并在表格中打印

R 如何使代码更简单并在表格中打印,r,R,我正在计算n=1,2,5,10100500和1000的两个值,不确定如何在更简单的代码中实现这一点。我为每个人写了n=1,2,5,…,1000的代码,想知道是否有一种方法可以不重复地写代码 dt <- T/n1 T <- 1 sigma <- 0.2 S0 <- 100 K1 <- 1 r <- 0.05 p <- (exp(r*dt)-d)/(u-d) u <- exp(sigma*(dt)^0.5) d <- exp(-sigma*(d

我正在计算n=1,2,5,10100500和1000的两个值,不确定如何在更简单的代码中实现这一点。我为每个人写了n=1,2,5,…,1000的代码,想知道是否有一种方法可以不重复地写代码

dt <- T/n1 
T <- 1
sigma <- 0.2
S0 <- 100
K1 <- 1
r <- 0.05
p <- (exp(r*dt)-d)/(u-d)
u <- exp(sigma*(dt)^0.5)
d <- exp(-sigma*(dt)^0.5)
e <- exp(-r*T)
c1 <- gamma(1+n1)/(gamma(1+K1)*gamma(1+(n1-K1)))

##n = 1

n1 <- 1

for(i in 0:n1)
{
calculate1 <- c1*p^i*(1-p)^(n1-i)*(u^(i)*d^(n1-i)*S0-K1)
}

price1 <- e*calculate1
print(price1)

##n = 2
dt <- T/n2 
T <- 1
sigma <- 0.2
S0 <- 100
K2 <- 2
r <- 0.05
p <- (exp(r*dt)-d)/(u-d)
u <- exp(sigma*(dt)^0.5)
d <- exp(-sigma*(dt)^0.5)
e <- exp(-r*T)
c1 <- gamma(1+n2)/(gamma(1+K2)*gamma(1+(n2-K2)))
n2 <- 2

for(i in 0:n2)
{
  calculate2 <- c1*p^i*(1-p)^(n2-i)*(u^(i)*d^(n2-i)*S0-K2)
}

price2 <- e*calculate2
print(price2)

## I do the same thing for n=5,10,100,500 and 1000


pricesintable <- matrix(c(price1,price2,price5,price10, price100, price500,   price1000), ncol =1, byrow = TRUE)
colnames(pricesintable) <- c("Price")
rownames(pricesintable) <- c("1","2","5","10","100","500","1000")
pricesintable <- as.table(pricesintable)
print(pricesintable)

<代码> DT请考虑通过使代码具有可重复性来改进您的问题,以便我们可以执行和调试它(参见)。THX:-)回答问题的第一印象:创建一个包含计算代码和所需输入作为参数的函数(例如
n
)。创建一个所有值均为
n
的向量<代码> LePix<代码> > <代码> n>代码>……在@ RyoDA的评论之后,N2是什么?请考虑通过使代码可重复性来改进您的问题,以便我们可以执行和调试它(参见)。THX:-)回答问题的第一印象:创建一个包含计算代码和所需输入作为参数的函数(例如
n
)。创建一个所有值均为
n
的向量
lappy
over
n
…在@RYoda的评论之后,n2是什么?