Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
purrr函数内部的点机制_R_Purrr - Fatal编程技术网

purrr函数内部的点机制

purrr函数内部的点机制,r,purrr,R,Purrr,让我从一个玩具数据集开始 library(magrittr) library(purrr) set.seed(13) X<-matrix(rnorm(120),20,6) %>% data.frame %>% set_colnames(LETTERS[1:5]) 现在我给它添加了点机制: foo<-function(X,...){ win.graph(5,5) par(mfcol=c(3,2)) par(mar=c(5,4,.1,.1)) X %>

让我从一个玩具数据集开始

library(magrittr)
library(purrr)
set.seed(13)
X<-matrix(rnorm(120),20,6) %>% data.frame %>% set_colnames(LETTERS[1:5])

现在我给它添加了点机制:

foo<-function(X,...){
  win.graph(5,5)
  par(mfcol=c(3,2))
  par(mar=c(5,4,.1,.1))
  X %>% iwalk(~plot(.x, rnorm(20), xlab=.y, ylab='Random',...))
}

现在
foo(X)
foo(X,pch=2)
在plot.xy(xy,type,…)中出现
错误:无效的plot类型

我们可以这样做
do.call

foo <- function(X, ...){
     v1 <- c(...)

  win.graph(5,5)
  par(mfcol=c(3,2))
  par(mar=c(5,4,.1,.1))
   X %>%
      iwalk(~ {args <- list(xlab = .y, ylab = 'Random')
               args[names(v1)] <- v1
           do.call(plot, c(list(x = .x, y = rnorm(20)), args))            

               }) 
  }

foo(X)
foo(X, cex = 2)
foo(X, pch = 2)
foo(X, cex = 2, pch = 2)
foo(X, cex = 2, pch = 2, col = 2)
foo感谢您的解决方案(+1)。但是,它是有效的,我想到了一些更像
tidyverse
-的东西。请参阅我对我的问题所做的编辑。
foo<-function(X, ...){
  win.graph(5,5)
  par(mfcol=c(3,2))
  par(mar=c(5,4,.1,.1))
  vars<-quos(...)
  X %>% iwalk(~plot(.x, rnorm(20),xlab=.y, ylab='Random', !!! vars))
}
foo <- function(X, ...){
     v1 <- c(...)

  win.graph(5,5)
  par(mfcol=c(3,2))
  par(mar=c(5,4,.1,.1))
   X %>%
      iwalk(~ {args <- list(xlab = .y, ylab = 'Random')
               args[names(v1)] <- v1
           do.call(plot, c(list(x = .x, y = rnorm(20)), args))            

               }) 
  }

foo(X)
foo(X, cex = 2)
foo(X, pch = 2)
foo(X, cex = 2, pch = 2)
foo(X, cex = 2, pch = 2, col = 2)