R中矩阵运算的Margrittr管道

R中矩阵运算的Margrittr管道,r,matrix,pipe,magrittr,R,Matrix,Pipe,Magrittr,我正在研究一些函数,它们将矩阵作为输入,并提供矩阵作为输出。是否可以使用带有矩阵的magrittr管道,而不使用。占位符?理想情况下,我希望这些函数像dplyr链一样通过管道相互连接。问题是,我经常忘记指定。占位符和获取错误 library(magrittr) set.seed(123) m <- matrix(rnorm(10), ncol = 2) # This works perfectly: layout_align_x <- function(n = nodes, a

我正在研究一些函数,它们将矩阵作为输入,并提供矩阵作为输出。是否可以使用带有矩阵的magrittr管道,而不使用。占位符?理想情况下,我希望这些函数像dplyr链一样通过管道相互连接。问题是,我经常忘记指定。占位符和获取错误

library(magrittr)
set.seed(123)
m <- matrix(rnorm(10), ncol = 2)  

# This works perfectly:
layout_align_x <- function(n = nodes, anchor, m = matrix){
  m[n, 1] <- m[anchor, 1]
  return(m)}

# This also works perfectly:
layout_align_x(c(1,2), 3, m)

# And this also: 
m %>% layout_align_x(c(1,2), 3, .)

# This returns error: 
m %>% layout_align_x(c(1,2), 3)
#Error in m[anchor, 1] : incorrect number of dimensions

# The goal is:
m %>% 
  layout_align_x(c(1,2), 3) %>% 
  layout_align_x(c(3,4), 5) 

将您的函数更改为

layout_align_x <- function(m = matrix, n = nodes, anchor){
  m[n, 1] <- m[anchor, 1]
  return(m)
}

将您的函数更改为

layout_align_x <- function(m = matrix, n = nodes, anchor){
  m[n, 1] <- m[anchor, 1]
  return(m)
}

您可以更改布局对齐函数,使矩阵成为第一个输入,或者指定输入,如m=,n=c1,2。。。?未测试最佳解决方案是不要忘记“.”:您是否受输入选项顺序的约束?如果没有,您可以指定layout_align_x%layout_alignc1、2、3可以。您好,我不受订单的约束。@HectorHaffenden,是的。我会尽快接受的。谢谢。您可以更改布局对齐函数,使矩阵成为第一个输入,或者指定输入,如m=,n=c1,2。。。?未测试最佳解决方案是不要忘记“.”:您是否受输入选项顺序的约束?如果没有,您可以指定layout_align_x%layout_alignc1、2、3可以。您好,我不受订单的约束。@HectorHaffenden,是的。我会尽快接受的。谢谢