我有一組500個方程式,列在一個.csv檔案的單列中。這些方程被寫成這樣的文本(例如):
15 6.2*A-4.3*B 3.7*C-7.9*B*C 2*D^2
(這是方程的 "右邊",等于 "y",但文本 "y="沒有出現在.csv檔案中)
這些是一般的線性模型,已經被別人寫入了一個.csv檔案。并非所有的模型都有相同數量的變數。
我想讀一讀這些模型。
我想將這些函式讀入R,并將其格式化,以便能夠使用它們來(反復地)繪制簡單的線圖(每個n = 500個模型一個),即在給定的B、C和D的值中,跨越A(顯示在x軸上)的值范圍的 "y"。
有人對如何做這件事有什么建議嗎?
uj5u.com熱心網友回復:
我根據這個[帖子][1]想到了一些東西,它不是最好的解決方案,但它似乎是可行的。
方程
創建了兩個方程,作為一個例子。models <- c("15 6。 2*A-4.3*B 3.7*C-7.9*B*C 2*D^2","50 6.2*A-4.3*B 3.7*C-7.9*B*C 2*D^2")
models_names < - c("model1"/span>。 "model2")
資料
以隨機資料為例
data <-
tibble()
A = rnorm(100),
B = rnorm(100),/span>
C = rnorm(100),/span>
D = rnorm(100)
)
函式
然后創建了一個函式,使用這些文本方程,并應用于回傳值的函式
。text_model < - function(formula){
eval(parse(text = paste('f < - function(A,B,C,D) { return(' , formula , ') }', sep=')))
out < -f(data$A,/span>data$B。 data$C,data$D)
return(out)
}。
應用的方程
最后,我為資料應用了每個方程,并將兩者系結。data %>%
bind_cols()
map(.x = models,. f = text_model) %>%。
set_names(models_names) %>%
bind_rows(.id = "model")
)
# A tibble: 100 x 6
A B C D model1 model2
<dbl> < dbl> <dbl> <dbl> < dbl> <dbl>/span>
1 -0.0633 1。 18 -0.409 2.01 9.52 54.9
2 -0.00207 1. 35 1.28 1.59 9.16 40.3
3 0.798 -0.141 1. 58 -0.123 20.6 63.2
4 -0.162 -0. 0795 0.408 0.663 14.3 52.0
5 -1.11 0. 788 -1.37 1.20 4.71 46.0
6 2.80 1.84 -0。 850 0.161 24.4 68.7
7 1.03 0.550 0. 907 -1.92 19.0 60.8
8 0.515 -0. 179 -0.980 0.0437 19.0 48.9
9 -0.353 0。 0643 1.39 1.30 12.5 55.3
10 -0.427 -1. 01 -1.11 -0. 547 16.7 39.3
# ... with 90 more rows
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/309268.html
標籤:
