Труба Margrittr с матричными операциями в R - PullRequest
1 голос
/ 27 марта 2019

Я работаю над некоторыми функциями, которые принимают матрицу в качестве входных данных и предоставляют матрицу в качестве выходных данных. Можно ли использовать трубу 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) 

1 Ответ

4 голосов
/ 27 марта 2019

Измените свою функцию на

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