-2
我試圖模擬R中的細胞攝取,並從伯克利麥當娜移植了一個模型。該模型由幾個常量和微分方程組成,用於計算量和濃度。代碼的一部分列出:如何基於多個組構建R中的ODE
library(deSolve)
fb = 0.0510
Km = 23.5
Pdif = 0.429
Vmax = 270
Vol_cell = 9.33
Vol_media = 150
S = 10 #concentration of dosing media
yini = c(Amt_media=(S*Vol_media)-(S*fb*Vol_cell),
Amt_cell=S*fb*Vol_cell,
Amt_total=S*Vol_media,
Con_media=S-(S*fb),
Con_cell=S*fb)
Uptake = function(t, y, p){
dy1 = (- (Pdif * y[1]) + (Pdif * y[2]) - ((Vmax * y[4])/(Km + y[4])))
dy2 = (+ (Pdif * y[1]) - (Pdif * y[2]) + ((Vmax * y[4])/(Km + y[4])))
dy3 = dy1 + dy2
dy4 = dy1/Vol_media
dy5 = dy2/Vol_cell
list(c(dy1, dy2, dy3, dy4, dy5))}
times1 = seq(from=0, to=15, by=0.01)
out1 = ode(y=yini, times=times1, func=Uptake, parms=NULL, method="rk4")
其餘代碼用於輸出到數據框和繪圖。我的問題是如何讓代碼結構化爲使用「S」作爲幾個濃度的列表,以便每個濃度都可以應用到微分方程(基本上給我一個out1用於S1,out2用於S2等等,然後可以被傳遞到數據框)?在伯克利麥當娜,這是通過寫35多個微分方程實現的,儘管如果可能的話我想在R中使用簡化的方法。
寫一個函數,'S'作爲參數,然後使用' lapply'來調用它以獲得許多不同的'S'值:myfun <-function(S){return S + 1};拉普利(1:10,myfun)'。這會給你一個對應於'S'的每個值的輸出列表。 – MrFlick
謝謝MrFlick。我一直在翻閱SO和R文檔幾個星期,現在正在尋找示例代碼來整合到模型中。無可否認,我不太清楚如何實施您的解決方案。您的建議是否被納入「攝取」功能中作爲「with(parm ...)」,或作爲獨立功能存在,強制「攝取」進入循環以對所有「S」的值產生「out」? – Ron
''uptake''似乎與'S'沒有任何關係,你只能在你的'yini'中使用它。你是否剛剛開始編程?是這個問題嗎?也許一個基本的R教程可能會幫助你我不確定我是否理解你陷入困境 – MrFlick