[英]R lapply on a function with three variables
我有一個帶有三個變量的 function
fcalc <- function(n1,n2,n3){
calc1 <- n1*5+n2*10-n3*2
)
我想傳遞值: 1:2 到 n1 3:5 到 n2 和 6:9 到 n3
但是,當我嘗試
list1 <-lapply(1:2,3:5,6:9,fcalc)
liat1
我得到一個錯誤。
例如,當 n1=1 和 n2=3 和 n3=6 時,function 會給出
calc1 <- 1*5+3*10-6*2
23
我會很感激你的幫助。
pmap
的一個選項
library(purrr)
library(tidyr)
fcalc <- function(n1, n2, n3) n1 * 5 + n2 * 10 - n3 * 2
pmap_dbl(crossing(n1 = 1:2, n2 = 3:5, n3 = 6:9), fcalc)
如果您真正想要做的是為每個值組合獲取 calc1 ,那么這可能是您的解決方案:
fcalc <- function(x) {
x[1]*5+x[2]*10-x[3]*2
}
(df <- expand.grid(x1=1:2,x2=3:5,x3=6:9))
(df$calc1 <- apply(df,1,fcalc))
您也可以使用outer()
:
fcalc <- function(x, y, z) {
c(outer(outer(x * 5, y * 10, FUN = "+"), z * 2, FUN = "-"))
}
fcalc(1:2, 3:5, 6:9)
[1] 23 28 33 38 43 48 21 26 31 36 41 46 19 24 29 34 39 44 17 22 27 32 37 42
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.