我遇到了这个问题 ifelse
里面的句子map
功能:
df<-list(mtcars,mtcars)
我想要做的就是以这种方式组织这个列表的每个数据框:slice(x,c(n(),2:(n()-1),1))
map(df, ~ slice(.x,c(n(),2:(n()-1),1))) # it works well.
但是当我设置条件 x$cyl == 4
时,我无法在 ifelse 中执行此操作:map(df, ~ ifelse(sum(.x$cyl == 4) > 0, slice(.x,c(n(),2:(n()-1),1)), .x)) # The output is weird
我尝试使用 lapply 做同样的事情,但它不起作用:lapply(df, function(x) ifelse(sum(x$cyl == 4) > 0, slice(x,c(n(),2:(n()-1),1)),x))
有什么帮助吗?
最佳答案
我们可以使用 map_if
仅当条件为 TRUE 时才应用该函数。
library(tidyverse)
df <- list(mtcars,mtcars)
df2 <- map_if(df, .p = function(y) any(y$cyl == 4),
.f = ~slice(.x, c(n(), 2:(n()-1), 1)))
关于r - 如何在R中的map函数中使用if else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67309125/