将维度为3x1的列向量的第一个元素与维度为5x1的列向量相等,依此类推

时间:2014-11-21 17:26:26

标签: r vector

我有以下两个列向量的示例:

a = [1,2,3]
b = [4,5,6,7,8]

我想要以下内容:

1/4,1/5,1/6,1/7,1/8,2/4,2/5,2/6,2/7,2/8,3/4,3/5,3/6,3/7,3/8

感谢您的帮助。注意/是除法运算符。感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用outer

c(outer(a,b, FUN="/"))
#[1] 0.2500000 0.5000000 0.7500000 0.2000000 0.4000000 0.6000000 0.1666667
#[8] 0.3333333 0.5000000 0.1428571 0.2857143 0.4285714 0.1250000 0.2500000
#[15] 0.3750000

如果您想要fractions

library(MASS)
fractions(c(outer(a,b, FUN="/")))
#[1] 1/4 1/2 3/4 1/5 2/5 3/5 1/6 1/3 1/2 1/7 2/7 3/7 1/8 1/4 3/8

或者如果你想像这样代表它

 c(t(outer(a[,1], b[,1], FUN= paste, sep="/")))
 #[1] "1/4" "1/5" "1/6" "1/7" "1/8" "2/4" "2/5" "2/6" "2/7" "2/8" "3/4" "3/5"
 #[13] "3/6" "3/7" "3/8"

数据

a <- matrix(1:3)
b <- matrix(4:8)