Tag: sapply

如何将函数应用于R中matrix(或dataframe)的每一行

假设我有一个2×2的matrix和一个把2个vector作为它的一个参数的函数。 我想将这个函数应用到matrix的每一行,并得到一个n向量。 如何在R中做到这一点? 例如,我想计算三点的2D标准正态分布的密度: 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)); 如何将函数应用到每一行? 如何通过指定的方式将除了点之外的其他参数的值传递给函数? 谢谢!

分组函数(tapply,by,aggregate)和* apply family

每当我想在R中“映射”py时,我通常会尝试在apply系列中使用函数。 然而,我从来没有完全理解它们之间的差异 – 如何将input/分组input的function,输出的结果,甚至是input的内容我经常只是通过他们,直到我得到我想要的。 有人可以解释如何使用哪一个? 我目前(可能不正确/不完整)的理解是… sapply(vec, f) :input是一个向量。 输出是一个向量/matrix,其中元素i是f(vec[i]) ,给出一个matrix,如果f有一个多元素输出 lapply(vec, f) :与sapply相同,但是输出是列表? apply(matrix, 1/2, f) :input是一个matrix。 输出是一个向量,其中元素i是f(matrix的行/列) tapply(vector, grouping, f) :output是一个matrix/数组,其中matrix/数组中的一个元素是该vector的分组g处的f的值,并且g被推到行/列名 by(dataframe, grouping, f) :让g是一个分组。 将f应用于组/数据框的每一列。 漂亮的打印分组和每列的f的值。 aggregate(matrix, grouping, f) :类似于,但不是漂亮地打印输出,聚合将所有东西都粘到数据框中。 旁边的问题:我还没有学会plyr或重塑 – 将plyr或reshape完全取代所有这些?