r - 将函数应用于矩阵或数据框的每一行

标签 r function matrix apply sapply

假设我有一个 n × 2 矩阵和一个将 2 向量作为其参数之一的函数。我想将该函数应用于矩阵的每一行并获得一个 n 向量。如何在 R 中执行此操作?

例如,我想计算三个点上的二维标准正态分布的密度:

bivariate.density(x = c(0, 0), mu = c(0, 0), sigma = c(1, 1), rho = 0){
    exp(-1/(2*(1-rho^2))*(x[1]^2/sigma[1]^2+x[2]^2/sigma[2]^2-2*rho*x[1]*x[2]/(sigma[1]*sigma[2]))) * 1/(2*pi*sigma[1]*sigma[2]*sqrt(1-rho^2))
}

out <- rbind(c(1, 2), c(3, 4), c(5, 6))

如何将函数应用于out的每一行?

如何以您指定的方式将除点之外的其他参数的值传递给函数?

最佳答案

您只需使用apply()函数即可:

R> M <- matrix(1:6, nrow=3, byrow=TRUE)
R> M
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
R> apply(M, 1, function(x) 2*x[1]+x[2])
[1]  4 10 16
R> 

这需要一个矩阵并对每一行应用一个(愚蠢的)函数。您将额外的参数传递给函数,作为 apply() 的第四个、第五个……参数。

关于r - 将函数应用于矩阵或数据框的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4236368/

相关文章:

从向量中删除连续值,但不迭代

r - R 的 dplyr 切片中的奇怪行为

r - 如何创建一个新变量,将数值变量分配给 1000 个单位的间隔。右

c++ - 成员函数与具有对象引用的静态函数

sql - 在 sql 中使用函数或直接列名

r - 计算 R 中非零值之间出现零的次数

JavaScript - 如何在显示为正方形/矩阵的元素线性数组中按键查找元素的 x,y 位置?

r - 将一列中的值除以 R 中另一列中的值

c++ - 在无效函数 C++ 中使用#include 变量

c++ - 从 C++ 中的 3D 矩阵中提取 2D 矩阵