3

我正在使用以下方法在 R 中生成一个矩阵,

ncolumns = 3
nrows = 10
my.mat <- matrix(runif(ncolumns*nrows), ncol=ncolumns)

该矩阵表示点在 3D 中的坐标。如何在R中计算以下?

sum of x(i)*y(i)

例如,如果矩阵是,

x y z
1 2 3
4 5 6

然后输出=1*2 + 4*5

我正在努力学习 R。所以任何帮助都将不胜感激。

谢谢

4

3 回答 3

6

您正在寻找 %*% 功能。

ncolumns = 3
nrows = 10

my.mat <- matrix(runif(ncolumns*nrows), ncol=ncolumns)

(my.answer <- my.mat[,1] %*% my.mat[,2])

#       [,1]
# [1,] 1.519
于 2013-02-17T02:21:30.070 回答
2

你只需这样做:

#  x is the first column; y is the 2nd
sum(my.mat[i, 1] * my.mat[i, 2])

现在,如果要命名列,可以直接引用它们

colnames(my.mat) <- c("x", "y", "z")

sum(my.mat[i, "x"] * my.mat[i, "y"])

# or if you want to get the product of each i'th element 
#  just leave empty the space where the i would go
sum(my.mat[ , "x"] * my.mat[ , "y"])
于 2013-02-17T02:20:21.397 回答
1

每列由 中的第二个参数指定[],因此

my_matrix[,1] + my_matrix[,2] 

是你所需要的全部。

于 2013-02-17T02:20:05.657 回答