Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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_Tidyverse_Purrr - Fatal编程技术网

R 在数据帧上修改_

R 在数据帧上修改_,r,tidyverse,purrr,R,Tidyverse,Purrr,我没有在purrr::modify_if语法中摸索一些基本的东西 假设我想做一些愚蠢的事情——取任何名称为2个字符长的变量,并将其剪切 以下是我的尝试: library(tidyverse) library(stringr) library(magrittr) mtcars %>% modify_if(~. %>% names %>% str_length %>% equals(2), f

我没有在
purrr::modify_if
语法中摸索一些基本的东西

假设我想做一些愚蠢的事情——取任何名称为2个字符长的变量,并将其剪切

以下是我的尝试:

library(tidyverse)
library(stringr)
library(magrittr)

mtcars %>% 
   modify_if(~. %>% 
          names %>%
          str_length %>%
          equals(2),
      function(i)
         cut_number(i, n = 2))

如何在第一个参数中传递一组逻辑谓词?

正如@thelatemail所指出的,问题在于返回逻辑谓词的第一个函数需要查看name属性。解决这个问题:

mtcars %>% 
   modify_if(mtcars %>% 
      names %>% 
      str_length %>% 
      equals(2),
   function(i) 
      i %>% 
      cut_interval(n = 2))

如果
modify\u如果
正在评估每一列,我认为它不会知道它的名称。与
purrr::map(mtcars,name)
甚至
lappy(mtcars,name)
为每个结果返回
NULL
的方式相同。(很高兴被证明是错误的,但这是我的猜测)。你完全正确——这就是为什么这样做的原因:
mtcars%>%modify\u如果(mtcars%>%names%>%str\u length%>%等于(2),函数(i)i%>%cut\u interval(n=2))
如果您愿意,我想您可以回答自己的问题:-)