我正在学习R并阅读r。
中的编程算法指南本书给出了一个示例函数:
System.DateTime dateTimeOut;
var culture = CultureInfo.CreateSpecificCulture("en-GB");
var styles = DateTimeStyles.None;
if (DateTime.TryParse("18/06/2015", culture, styles, out dateTimeOut))
{
Console.WriteLine("Good Job!");
}
如何在R控制台中调用此功能?究竟是什么传递到这个函数A,X?
答案 0 :(得分:3)
该函数接受一个参数A
,它应该是一个矩阵,x
,它应该是一个与A
中每行值相同长度的数字向量。
如果
A <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
然后每行有3个值(列数ncol
),因此x
需要类似
x <- c(4,5,6)
函数本身迭代所有行,并在每一行中,每个值乘以x
的值,其中第一列中的值乘以x
中的第一个值, A
第二列中的值与x
中的第二个值相乘,依此类推。对每一行重复此操作,函数返回每行的sum
。
matvecmult(A, x)
[,1]
[1,] 49 # 1*4 + 3*5 + 5*6
[2,] 64 # 2*4 + 4*5 + 6*6
要运行此函数,首先必须编译(源代码)然后连续运行这三个代码行:
A <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3)
x <- c(4,5,6)
matvecmult(A, x)
答案 1 :(得分:1)
此函数用于返回矩阵A
与向量x
的乘积;即结果将是矩阵产品 A
x
(其中 - 通常在R中,向量是列向量)。一个例子应该清楚。
# define a matrix
mymatrix <- matrix(sample(12), nrow <- 4)
# see what the matrix looks like
mymatrix
# [,1] [,2] [,3]
# [1,] 2 10 9
# [2,] 3 1 12
# [3,] 11 7 5
# [4,] 8 4 6
# define a vector where multiplication of our matrix times the vector will be defined
vec3 <- c(-1,0,1)
# apply the function to our matrix and vector
result <- matvecmult(mymatrix, vec3)
result
# [,1]
# [1,] 7
# [2,] 9
# [3,] -6
# [4,] -2
class(result)
# [1] "matrix"
所以matvecmult(mymatrix, vec3)
是你如何调用这个函数,结果是 n 乘以1矩阵,其中 n 是行中的行数矩阵论证。
您还可以通过游戏并了解当您传递除定义产品的矩阵向量对之外的其他内容时会发生什么来获得一些洞察力。在某些情况下,您会收到错误;有时候你会胡说八道;有时你会得到一些你可能不会从函数名称中得到的东西。看看致电matvecmult(mymatrix, mymatrix)
时会发生什么。
答案 2 :(得分:0)
该函数正在计算Matrix和列向量的乘积。它假设矩阵的列数等于向量中的元素数。
它存储A
中n
的列数和m
中的行数。
然后初始化m
行的矩阵,所有值都为0
。
它沿着A
行迭代,并将每行中的每个值与x
中的值相乘。
答案是存储在y
中,最后它返回单列矩阵y
。