Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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
逐字命令参数:包装器中的deparse(substitute(foo))_R - Fatal编程技术网

逐字命令参数:包装器中的deparse(substitute(foo))

逐字命令参数:包装器中的deparse(substitute(foo)),r,R,对于那些精通R计算器如何处理函数调用的人来说,这里有一个小难题。假设我想编写一个函数,它接受一个R语句,与我在命令行中编写的语句相同,并同时响应它和计算结果。例如: > p.eval(sum(1:3)) sum(1:3) --> 6 这很容易;下面是p.eval()的定义: p.eval试试这个: > "%PE%" <- function(x, ...) do.call(p.eval, list(substitute(x))) > sum(1:3) %PE%

对于那些精通R计算器如何处理函数调用的人来说,这里有一个小难题。假设我想编写一个函数,它接受一个R语句,与我在命令行中编写的语句相同,并同时响应它和计算结果。例如:

 > p.eval(sum(1:3))
 sum(1:3) --> 6
这很容易;下面是
p.eval()
的定义:

p.eval试试这个:

> "%PE%" <- function(x, ...) do.call(p.eval, list(substitute(x)))
> sum(1:3) %PE% 0
sum(1:3) -->  6 
%PE%和(1:3)%PE%0
总和(1:3)->6

也可以让p.eval返回“v”,然后:

 p.eval <- function(v,prefix="--> ") {
        cmd <- deparse(substitute(v)); cat(cmd,prefix,v,"\n") ; return(v)  } 
"%PE%" <- function(x, y=NULL) x 
 sum(1:3) %PE% Inf
 #[1] 6  
sum(1:3) %PE%   # won't accept single argument
  r   # give it anything
 #[1] 6

p.eval如果你要走这条路,我建议你阅读,尤其是“从另一个函数调用”部分优秀资源,哈德利。期待其他章节的完成。
> "%PE%" <- function(x, ...) do.call(p.eval, list(substitute(x)))
> sum(1:3) %PE% 0
sum(1:3) -->  6 
 p.eval <- function(v,prefix="--> ") {
        cmd <- deparse(substitute(v)); cat(cmd,prefix,v,"\n") ; return(v)  } 
"%PE%" <- function(x, y=NULL) x 
 sum(1:3) %PE% Inf
 #[1] 6  
sum(1:3) %PE%   # won't accept single argument
  r   # give it anything
 #[1] 6