Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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
R 管道链的就地改造_R_Magrittr - Fatal编程技术网

R 管道链的就地改造

R 管道链的就地改造,r,magrittr,R,Magrittr,我试图在magrittr中动态修改管道链中的某些对象。第一次尝试: 1:3 %>% (function(x) {x[1] <- 42; x}) #[1] 42 2 3 我想知道在不需要定义任何lambda的情况下是否可以实现同样的功能。最短的方法是什么?我可以使用赋值运算符%{.[1]这些管道的主要思想是使内容可读,而将函数定义内联会在一定程度上撤销这一点。我宁愿在管道之外定义一个函数并使用它: > fidge=function(x,n,v){x[n]=v;x} &g

我试图在
magrittr
中动态修改管道链中的某些对象。第一次尝试:

1:3 %>% (function(x) {x[1] <- 42; x})
#[1] 42  2  3  

我想知道在不需要定义任何lambda的情况下是否可以实现同样的功能。最短的方法是什么?我可以使用赋值运算符
%{.[1]这些管道的主要思想是使内容可读,而将函数定义内联会在一定程度上撤销这一点。我宁愿在管道之外定义一个函数并使用它:

> fidge=function(x,n,v){x[n]=v;x}
> 1:3 %>% fidge(1,42)
[1] 42  2  3
特别是如果你计划在多个地方做这件事

如果你真的想在这里打代码高尔夫,这个怎么样:

> 1:3 %>% "[<-"(1,42)
[1] 42  2  3
>1:3%>%“[尝试以下操作:

> 1:3 %>% replace(1, 42)
[1] 42  2  3

例如,
data.frame
s中的
功能可以用于:

iris %>%
  within({
    Sepal.Length <- 10
    Width.Square <- Sepal.Width^2
  }) 

@Spacedman:也许可以为
[我喜欢打高尔夫球的方法,尽管这似乎有点过分。第一个选项似乎是合适的,谢谢。在这种情况下,使用
替换
,接受GG的答案!这是另一个黄金案例。”“规则”总是有一个基本函数;谢谢!
> 1:3 %>% replace(1, 42)
[1] 42  2  3
iris %>%
  within({
    Sepal.Length <- 10
    Width.Square <- Sepal.Width^2
  }) 
list(a = 1, b = 2) %>%
  within({
    a = 3
    d = 4
  })