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))
如果您愿意,我想您可以回答自己的问题:-)