Magrittr%>%运算符可更改Matrix的尺寸

时间:2017-05-18 14:56:53

标签: r dplyr

我正在与R中的%>%操作员一起迈步。这非常有用,但有时我会陷入必须简单的事情。

考虑以下示例:

mm<-matrix(nrow=4, ncol=5, seq(20))
dim(mm)<-NULL

我用来压扁矩阵。如何使用%>%展平mm?

4 个答案:

答案 0 :(得分:4)

一个解决方案是c()

mm %>% c
#[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

答案 1 :(得分:4)

你可以使用一个功能:

set_dim_to_null <- function(mat) {
  dim(mat) <- NULL
  mat
}

mm %>% 
  set_dim_to_null()

或者使用可以像匿名函数一样工作的大括号:

mm %>% {
    dim(.) <- NULL
    .
  }

答案 2 :(得分:1)

mm %>% as.numeric

也会产生所需的结果。

答案 3 :(得分:0)

Magrittr有一些aliases用于制定者。

dim不在其中,但R中的setter实际上只是具有以<-结尾并返回修改对象的特殊名称的函数。因此,简单地执行以下操作将为您提供一个功能完善的功能,可以执行您想要的操作:

set_dim <- `dim<-`

你可以在管道中使用这样的别名或普通的setter名称:

mm %>% set_dim(NULL)
mm %>% `dim<-`(NULL)