purrr::pwalk 在改变 col 时会抛出错误,而 purrr::pmap 则不会

问题描述 投票:0回答:1

我想了解为什么第一个块有效但第二个块不起作用。我相信这与

pwalk
实际上没有输出任何内容有关。然而,错误是
concated_cols must be size 150 or 1, not 2
。我原以为它的大小是 1。它输出什么?

library(tidyverse)


#pmap: Works
iris|>
  mutate(concated_cols=pmap(
    .l = list(Sepal.Length=Sepal.Length,Petal.Length=Petal.Length),
    .f = \(Sepal.Length,Petal.Length){
      str_c(Sepal.Length,Petal.Length)
    }
  ))


#pwalk: Does not work (in my use case, I was trying to use pwalk to write out files, so this is just to demo the error
iris|>
  mutate(concated_cols=pwalk(
    .l = list(Sepal.Length=Sepal.Length,Petal.Length=Petal.Length),
    .f = \(Sepal.Length,Petal.Length){
      str_c(Sepal.Length,Petal.Length)
    }
  ))
r purrr
1个回答
0
投票

如果您阅读“值”部分下的

?purrr::pwalk
的帮助,您会发现:

walk() 返回输入 .x (不可见)。这使得它很容易在管道中使用。 .f() 的返回值被忽略。

所以你的

pwalk()
正在回归
list(Sepal.Length=Sepal.Length,Petal.Length=Petal.Length)

© www.soinside.com 2019 - 2024. All rights reserved.