R:使用函数apply计算行的总和

时间:2018-03-20 21:11:21

标签: r

我有这个矩阵SELECT u.user_name, u.email, GROUP_CONCAT(info) AS info, GROUP_CONCAT(address_field1) AS address_field1 FROM user u INNER JOIN info i ON (u.user_id = i.user_id) INNER JOIN address a ON (u.user_id = a.user_id) GROUP BY u.user_name ASC | user_name | email | info | address_field1 | |-----------|--------------|-------------------|----------------------| | name1 | one@ex.tld | text1,text1 | City A,City B | | name2 | two@ex.tld | text2,text2,text2 | City C,City D,City E | | name3 | three@ex.tld | text3 | City F | [1x15],我想使用函数mat=matrix(rnorm(15), 1, 15)来计算matix apply中的行总和 e.g。

mat

这是我的代码:

    [,1] [,2] [,3] [,4]
[1,]    1    2    3    0  #the sum is then 6

以下是错误:应用错误(mat [,1:15],1,总和):dim(X)必须具有正长度

如果我创建两行或更多行,则mat=matrix(rnorm(15), 1, 15) apply(mat[,1:15],1,sum) 函数有效。 e.g。

apply

我应该对函数进行哪些更改,以便即使对于一行矩阵也可以使用?

2 个答案:

答案 0 :(得分:2)

问题在于,当您调用元素1到15时,您将矩阵转换为矢量,因此它没有任何尺寸。只需在apply调用中使用as.matrix即可使其正常工作。

mat=matrix(rnorm(15), 1, 15)
apply(as.matrix(mat[,1:15]),2,sum)

答案 1 :(得分:1)

请执行此操作,然后阅读?Extract帮助页面。该页面有大量关于R最基本功能的信息,即“[”和“[[”。

apply(mat[ ,1:15, drop=FALSE],1,sum)  # preserves the matrix class
[1] -1.621488