2017-04-21 103 views
0

我正在使用R來集成一個函數與多個變量,其中每個變量是一個向量。我如何獲得矢量解決方案?我對R完全陌生,並且對我一般的編碼都是如此。整合多個變量,其中每個變量是R中的一個向量?

考慮以下變量: variable inputs

我需要整合以下功能: t∝ = time till conversion, Ta = Ta upper limit, Ta-∆∝ = Ta lower, E∝ = activation energy, β=5, T0=1173

下面是我用失敗的碼:

> library(readr) 
> R_test_file <- read_csv("~/R test file.csv") 
Parsed with column specification: 
cols(
    Conversion = col_double(), 
    `Activation Energy (kJ/mol)` = col_double(), 
    `Ta upper (Kelvin)` = col_double(), 
    `Ta lower (Kelvin)` = col_double() 
) 
> View(R_test_file) 
> Ea = R_test_file$`Activation Energy (kJ/mol)` 
> TaU = R_test_file$`Ta upper (Kelvin)` 
> TaL = R_test_file$`Ta lower (Kelvin)` 
> int.fun=function(Ea,T) (exp(-Ea/(8.314462*T)))/(5(exp(-Ea/(8.314462*1173)))) 
> integrate(int.fun, TaL, TaU) 

任何幫助,您可以提供將不勝感激。

回答

0

你的函數定義有一些錯誤。修改後的版本:

int.fun <- function(T, Ea) (exp(-Ea/(8.314462*T)))/(5*(exp(-Ea/(8.314462*1173)))) 

,你可以整合功能:

integrate(int.fun, Ea=-33.54, lower=296.1008, upper=553.4211) 

如果要集成了矢量值,你可以做這樣的事情: -

Ea <- c(-33.54, -33.51, 7.24, 159.18) 
TaU <- c(553.4211, 637.3555, 681.7970, 709.6234) 
TaL <- c(296.1008, 553.4211, 637.3555, 681.7970) 

lapply(seq_along(Ea), function(i) integrate(int.fun, Ea = Ea[i], lower = TaL[i], upper = TaU[i])) 
+0

感謝那些工作 –