4

これは再現可能な例です。

a <- 0.05
za.2 <- qnorm(1-a/2)
b <- 0.20
zb <- qnorm(1-b)

lambda12 <- -log(1/2)/12
lambda18 <- -log(1/2)/18
theta <- lambda18/lambda12
(d = round(4*(za.2+zb)^2/log(theta)^2))   

Tf<-36
library(Ryacas)
n <- Sym("n")

Solve(n/2*(2-exp(-lambda12*Tf)-exp(-lambda18*Tf))==d , n)

最後の行は

expression(list(n == 382/1.625))

商を抽出して別の変数(235.0769)に割り当てる方法はありますか?

4

1 に答える 1

3

G.Grothendieckはコメントの中で、最初に操作する式をキャプチャする必要があると指摘しました。

soln <- Solve(n/2*(2-exp(-lambda12*Tf)-exp(-lambda18*Tf))==d , n) 
X <- yacas(soln)$text

次に、商を抽出するために、多くのR言語オブジェクトがリストに強制されるか、強制される可能性があるという事実を利用できます。

 X <- expression(list(n == 382/1.625))
 res <- eval(X[[1]][[2]][[3]])
 res
 [1] 235.0769

以下は、インデックスのシーケンスが式の正しい部分を抽出する理由を示しています。

as.list(X)
# [[1]]
# list(n == 382/1.625)

as.list(X[[1]])
# [[1]]
# list
# 
# [[2]]
# n == 382/1.625

as.list(X[[1]][[2]])
# [[1]]
# `==`
# 
# [[2]]
# n
# 
# [[3]]
# 382/1.625
于 2011-12-12T21:10:59.683 に答える