- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
标准R表达式outer(X, Y, f)
计算得出一个矩阵,其第(i,j)个条目的值为f(X[i], Y[j])
。
我想实现函数multi.outer
,outer
的n维概括:multi.outer(f, X_1, ..., X_n)
,其中f是一些n元函数,将产生一个(length(X_1)* ... * length(X_n))数组,其(i_1 ,...,i_n)条目的所有有效索引集(i_1,...,i_n)的值均为f(X_1[i_1], ..., X_n[i_n])
。显然,对于{1,...,n}中的每个i,X_i
中multi.outer(f, X_1,...,X_i,..., X_n)
的所有元素必须是f
函数的第i个自变量。对于n = 2的情况,multi.outer
与outer
会做相同的事情,尽管它具有不同的签名(IOW,multi.outer(f, X, Y)
等效于outer(X, Y, f)
)。
重要的是要注意,尽管multi.outer
的参数X_1,...,X_n都是向量,但它们不一定都具有相同的模式。例如。 X_1和X_2分别可以是c(1, 2, 3)
和LETTERS[10:20]
。
谢谢!
最佳答案
这是一种方法:首先使用Vectorize
和outer
定义一个函数,该函数创建一个n维矩阵,其中每个条目都是将应用给定函数的参数列表:
list_args <- Vectorize( function(a,b) c( as.list(a), as.list(b) ),
SIMPLIFY = FALSE)
make_args_mtx <- function( alist ) {
Reduce(function(x, y) outer(x, y, list_args), alist)
}
multi.outer
只需在此“args-matrix”上调用
apply
和
do.call
:
multi.outer <- function(f, ... ) {
args <- make_args_mtx(list(...))
apply(args, 1:length(dim(args)), function(a) do.call(f, a[[1]] ) )
}
fun <- function(a,b,c) paste(a,b,c)
ans <- multi.outer(fun, LETTERS[1:2], c(3, 4, 5), letters[6:7] )
> ans
, , 1
[,1] [,2] [,3]
[1,] "A 3 f" "A 4 f" "A 5 f"
[2,] "B 3 f" "B 4 f" "B 5 f"
, , 2
[,1] [,2] [,3]
[1,] "A 3 g" "A 4 g" "A 5 g"
[2,] "B 3 g" "B 4 g" "B 5 g"
关于r - 如何将外部尺寸推广到n个尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6192848/
我有下一个方程组: #dY0=/dt = k1*S - k2*Y1*Y0 #dY1/dt = k3*S - k4*Y1 其中 S(t) 是一个阶梯函数,在 t = 4、8、12 等时增加一个单位。我的
卡在这个上了。 我刚刚开始使用 RubyMotion,现在又开始使用 ProMotion。我只是在制作一个待办事项风格的应用程序,只是为了学习一些东西。我在将数据保存到文件时遇到问题。现在忽略保存数据
我正在使用 PyQt 并尝试在 QtDesigner 中推广一个小部件。如果我在“头文件”字段中指定包含我的小部件子类的文件的完整模块路径,我就能让它工作。 有没有更好的方法将 QtDesigner
我一直在学习 Qt Designer 中的子类化和小部件提升,并且我提升了一些 QPushButtons。我提升的类代表计算器上的数字键,并在构造函数中接受一个参数。给定的参数是按钮的编号,它是作为
我使用 Cucumber 和 Capybara 编写了一个功能来测试我的网络应用程序的默认配置。部分功能如下所示: And the page has a photo labeled "Device"
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我正在编写一个 C++ 代码来进行 2D 和 3D 计算。主函数有一个参数,我可以从中判断是进行 2D 还是 3D 计算(dim=2 或 dim=3)。启用/禁用基于 dim 编译特定代码段的最佳选择
我的 Facebook 应用程序具有已批准的ads_read、manage_pages ads_management、business_management 和 Ads Management 标准访问
我尝试重新实现 mouseClickEvent,因为我需要区分右键单击和左键单击。我将我的QListView提升为WavList,并编写了以下代码,但出现了错误。 wavlist.h #ifndef
我是一名优秀的程序员,十分优秀!