R将函数应用于矩阵,其中每个向量(行)是一个参数

时间:2016-04-18 17:20:23

标签: r matrix sapply

我正在尝试编写一个函数来将函数应用于矩阵中的每一行,但问题是我需要矩阵中的每个向量(行)用作函数的参数。我正在使用sapply,因此我可以将其存储为结果矩阵并对其进行排序。

到目前为止我所拥有的是

  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.maventest</groupId>
            <artifactId>test-app</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <relativePath>../test-app</relativePath>
        </parent>
        <artifactId>test-repository</artifactId>
        <packaging>jar</packaging>

        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>apache-log4j-extras</artifactId>
                <version>1.2.17</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>org.eclipse.persistence.jpa</artifactId>
                <version>2.6.2</version>
            </dependency>
            <dependency>
                <groupId>javax.transaction</groupId>
                <artifactId>jta</artifactId>
                <version>1.1</version>
            </dependency>
            <dependency>
                <groupId>postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>9.1-901-1.jdbc4</version>
            </dependency>

        </dependencies>
    </project>

其中cosineSim定义为

r=apply(m,1,cosineSim(x['word',]))

但我遇到的问题是我无法弄清楚如何使用每个向量作为余弦函数的参数,该余弦函数需要两个向量。我有一个向量,但第二个应该是apply函数所在的当前行。我是R的新手,请原谅我,如果我的解决方案是微不足道的。谢谢你的帮助。

我使用的一些示例数据包括:

cosineSim <- function(v1,v2){
 a <- sum(v1*v2)
 b <- sqrt(sum(v1*v1))* sqrt(sum(v2*v2))
 return(a/b)
}

这是我正在使用的矩阵的一个小例子,我试图将这些行用作我的cosineSim函数的向量。

0 个答案:

没有答案