簡體   English   中英

R 應用於具有三個變量的 function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM