首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R l应用于具有三个变量的函数

R l应用于具有三个变量的函数
EN

Stack Overflow用户
提问于 2019-11-18 01:15:25
回答 3查看 73关注 0票数 2

我有一个有三个变量的函数

代码语言:javascript
复制
fcalc <- function(n1,n2,n3){

calc1 <- n1*5+n2*10-n3*2

)

我希望将值: 1:2传递给n1,3:5传递给n2,6:9传递给n3

然而,当我尝试

代码语言:javascript
复制
list1 <-lapply(1:2,3:5,6:9,fcalc)
liat1

我得到一个错误。

例如,当n1=1、n2=3和n3=6时,该函数将给出

calc1 <- 1*5+3*10-6*2

23

如果你能帮助我,我将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-18 01:52:07

如果您真正想要做的是为每个值组合获取calc1,那么这可能是您的解决方案:

代码语言:javascript
复制
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))
票数 1
EN

Stack Overflow用户

发布于 2019-11-18 03:25:47

pmap的一个选项

代码语言:javascript
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2019-11-18 02:04:37

您也可以使用outer()

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58903056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档