本文介绍了R中两个向量的乘置换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个长度为4的向量,并且想要向量的排列的乘积:

I've got two vectors of the length 4 and want a multiplication of the permutations of the vector:

A=(a1,a2,a3,a4)
B=(b1,b2,b3,b4)

我想要:

a1*b1;a1*b2;a1*b3...a4*b4

作为具有已知顺序的列表或具有row.names = A和colnames = B的data.frame

as a list with known order or data.frame with row.names=A and colnames=B

推荐答案

使用outer(A,B,'*')将返回矩阵

x<-c(1:4)
y<-c(10:14)
outer(x,y,'*')

返回

     [,1] [,2] [,3] [,4] [,5]
[1,]   10   11   12   13   14
[2,]   20   22   24   26   28
[3,]   30   33   36   39   42
[4,]   40   44   48   52   56

,如果您希望将结果显示在列表中,则可以进行

and if you want the result in a list you then can do

z<-outer(x,y,'*')
z.list<-as.list(t(z))

head(z.list)返回

[[1]]
[1] 10

[[2]]
[1] 11

[[3]]
[1] 12

[[4]]
[1] 13

[[5]]
[1] 14

[[6]]
[1] 20

x1 * y1,x1 * y2,x1 * y3,x1 * y4,x2 * y1,... >)

which is x1*y1, x1*y2, x1* y3, x1*y4, x2*y1 ,... (if you want x1*y1, x2*y1, ... replace t(z) by z)

这篇关于R中两个向量的乘置换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 18:32