R 在循环中使用具有2个输入的函数以及输入的组合来创建数据帧

R 在循环中使用具有2个输入的函数以及输入的组合来创建数据帧,r,function,for-loop,R,Function,For Loop,我创建了一个自定义函数,用于根据两个输入计算值 # function info.theta <- function(theta, delta) { P = 1/(1+exp(-1*(theta-delta))) Q = 1 -P 1*P*Q } #函数 info.theta您可以使用outer获取值矩阵: outer(thetas,deltas,info.theta) 您可以使用outer获取值矩阵: outer(thetas,deltas,info.theta

我创建了一个自定义函数,用于根据两个输入计算值

# function
info.theta <- function(theta, delta) {
    P = 1/(1+exp(-1*(theta-delta)))
    Q = 1 -P
    1*P*Q
}
#函数

info.theta您可以使用
outer
获取值矩阵:

outer(thetas,deltas,info.theta)

您可以使用
outer
获取值矩阵:

outer(thetas,deltas,info.theta)

对原始功能的轻微更改:

info.theta <- function(theta, delta) {
  P = 1/(1+exp(-1*(theta-delta)))
  Q = 1 -P
  data.frame(theta=theta,delta=delta, information=1*P*Q)

}

对原始功能的轻微更改:

info.theta <- function(theta, delta) {
  P = 1/(1+exp(-1*(theta-delta)))
  Q = 1 -P
  data.frame(theta=theta,delta=delta, information=1*P*Q)

}

完美的希望随着我编码的进步,我能更好地表达我的目标,并且在来这里之前能够更容易地解决这些问题。”“扩展.grid”似乎是一个非常简单的修复方法,如果我能更清楚地表达我的问题,我可以找到它。是的,我在上面添加了一条评论,但我会在这里添加它以供参考。尽可能地避免循环。使用
apply()
函数组,可以生成更干净、更有效、更快速的代码。此外,如果您想变得更有趣,您可能会在函数中包含
expand.grid()
片段,这样它只需要接收两个向量,并根据您的喜好输出一个data.frame.Perfect。希望随着我编码的进步,我能更好地表达我的目标,并且在来这里之前能够更容易地解决这些问题。”“扩展.grid”似乎是一个非常简单的修复方法,如果我能更清楚地表达我的问题,我可以找到它。是的,我在上面添加了一条评论,但我会在这里添加它以供参考。尽可能地避免循环。使用
apply()
函数组,可以生成更干净、更有效、更快速的代码。另外,如果你想变得更有趣,你可以在函数中加入
expand.grid()
片段,这样它只需要输入两个向量,然后输出一个你喜欢的data.frame。是的,一旦事情开始爆发,循环就不是超级有趣了。如果你不得不比较
n
事物呢?是的,一旦事物开始爆炸,循环就不是超级有趣了。如果您必须比较
n
事物,该怎么办?
td_grid<-expand.grid(thetas, deltas)
info.theta(td_grid[,1],td_grid[,2])
    theta delta  information
1    -4.0  -4.0 0.2500000000
2    -3.5  -4.0 0.2350037122
3    -3.0  -4.0 0.1966119332
4    -2.5  -4.0 0.1491464521
5    -2.0  -4.0 0.1049935854
6    -1.5  -4.0 0.0701037165
7    -1.0  -4.0 0.0451766597
8    -0.5  -4.0 0.0284530239
9     0.0  -4.0 0.0176627062
10    0.5  -4.0 0.0108662297
11    1.0  -4.0 0.0066480567