能否使用R语言的outer()函数生成矩阵格式的笛卡尔乘积?
R语言通过outer()生成矩阵格式笛卡尔乘积的方案
直接给outer()的FUN参数传入自定义拼接函数即可,代码如下:
x <- 1:2 y <- 1:3 # 自定义函数将每次传入的x、y元素拼接为向量,用list包裹避免outer自动拆分值 res <- outer(x, y, FUN = function(a, b) list(c(a, b)))
验证输出:
你可以直接访问矩阵任意位置的元素确认结构,例如执行res[1,1]会得到1 1的向量,打印整个矩阵的效果如下:
[,1] [,2] [,3] [1,] Integer,2 Integer,2 Integer,2 [2,] Integer,2 Integer,2 Integer,2
补充说明:必须用
list()包裹拼接后的向量,否则outer()会将返回的两个元素的向量拆分为独立单元格,最终输出4行3列的错误结构。
内容的提问来源于stack exchange,提问作者mk9y
相关产品推荐
相关产品推荐

