让F
成为一个带两个参数并返回数值的函数,让X
和Y
成为适合作为{的第一和第二个参数的值的向量{1}}。
是否有“功能”(即无环路),方便的方式来生成 ij -th条目为数字的矩阵
F
在Python中,我会这样做:
F(X[[i]], Y[[j]])
在Mathematica中,
[[F(x, y) for y in Y] for x in X]
等
R中是否有同样简单的东西?
更新:关于Table[F[x, y], {x, X}, {y, Y}]
:
outer
这个> F <- function (c1, c2) utf8ToInt(c1) - utf8ToInt(c2)
只是说明我的观点的一个愚蠢的例子。它在单独使用时有效:
F
可是:
> F('A', 'a')
[1] -32
我再说一遍,以上只是一个人为的例子,只是为了说明我的观点而炮制。 (因此,让它以非一般化的方式工作对我来说毫无用处。)
答案 0 :(得分:1)
矢量化F
,以便您可以将其与outer
一起使用或执行以下操作
sapply(c('A', 'B', 'C', 'D', 'E'), function(a)
sapply(c('a', 'b', 'c', 'd', 'e'), function(b)
F(a,b)))
# A B C D E
#a -32 -31 -30 -29 -28
#b -33 -32 -31 -30 -29
#c -34 -33 -32 -31 -30
#d -35 -34 -33 -32 -31
#e -36 -35 -34 -33 -32
答案 1 :(得分:1)
根据outer
的帮助,F需要被矢量化......
F <- Vectorize(function (c1, c2) utf8ToInt(c1) - utf8ToInt(c2))
outer(c('A', 'B', 'C', 'D', 'E'), c('a', 'b', 'c', 'd', 'e'), F)