将函数中使用的值限制为它们的总和

法西德

我创建了一个函数,该函数要计算(几个)数据向量。
实际上,对于一个变量,vctor的范围应为(1:100),而其他变量依次保持不变。

该函数是:EI <- function(x,y,z) {(x+y)/(2*(2*x+y)+z)}

我的问题是,x + y + z的总和必须限制为100。而且我不知道如何告诉它该函数。例如,如果x = 20y只能取从值0:80,即,(100-20),和z可以从0 takey值:100-(X + Y)。

我使用了以下代码,其中z不被视为全部。我以为,我至少会得到一个大向量,但我得到的只是一个数字:

for(x in 1:100) {
        for(y in 0:(100-x)) {
                for(z in 0:(100-(x+y))) {
                v1 <- c(EI(x,y,z))         
        }
}
}

我需要告诉函数EI(),x + y + z的总和始终为100。有人知道如何解决此问题吗?

用户1470500

如果要创建矢量,则需要执行以下操作:

v1 <- c()

for(x in 1:100) {
        for(y in 0:(100-x)) {
                for(z in 0:(100-(x+y))) {
                v1 <- c(v1, EI(x,y,z))         
        }
    }
}

不幸的是,这会很慢(因为在每个步骤中您都在重新分配新的向量),更好的选择是从分配具有适当大小的向量开始:

v1 <- numeric(171700)
k <- 0
for(x in 1:100) {
        for(y in 0:(100-x)) {
                for(z in 0:(100-(x+y))) {
                k <- k + 1
                v1[k] <- EI(x,y,z)         
        }
    }
}

您也可以使用sapply函数编写相同的内容,这会更快一些:

v1 <- unlist(sapply(1:100,
             function(x) {
               unlist(sapply(0:(100-x),
                      function(y) {
                        sapply(0:(100-(x+y)),
                               function(z) {EI(x,y,z)}) }))}))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将RAM的使用限制为python程序

在Spring中使用验证在毫秒时间将ZonedDateTime字段限制为3位数字

将插值函数限制为NA值

将生存期参数限制为函数参数的范围

如何使用`local -`将shell选项限制为一个函数?

在主体中使用c:if条件时,将c:forEach限制为最大值

使用keyof typeof将字符串值限制为对象键

将函数返回值限制为void

如何将只读变量范围限制为函数?

将权限限制为无法在Firestore规则中使用的作者

使用HTML将输入限制为0-100值

使用通配符将函数限制为仅接受类及其子类

如何将DU / ADT限制为某些案例标识符/值构造函数

Excel:您能否将 LARGE 函数的输出限制为存在重复值的多行?

将函数参数限制为某些枚举值

使用 std::min 将迭代器值限制为 end()

JS - 将函数执行限制为每秒一次

我们如何在 onTouch 事件中使用 drawRect() 将框限制为 Square

是否有 R 函数将数字总和限制为 100 保持原始比率

使用堆叠 geom_bar 时如何将色调限制为两个值

将 RGB 的值限制为 255

如何在 React.js 中使用特殊字符将文本字段限制为 100

将 Typescript 装饰器限制为 void 或 Promise<void> 函数

将函数的参数限制为仅枚举类型

将函数参数类型限制为特定类型的接口键

将函数参数限制为相同的键

可以将 PostgreSQL 安全定义器函数限制为 RLS 使用吗?

将指针限制为 OpenMP for 循环中的函数参数?

TypeScript:将函数参数值限制为动态变量中的数组值