r - 如何在R中的map函数中使用if else

标签 r if-statement dplyr purrr

我遇到了这个问题 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/

相关文章:

php - php 中的问题 if 条件

r - 将数字数组转换为列表并保存在 R 中的 CSV 中

r - 如何计算忽略组内嵌套的给定子组的组级统计数据?

r - 2.14.0 即将到来的命名空间、依赖、导入更改(请一些定义/使用)

Java If-else结构优化

javascript - 单击按钮时显示 2 个组件中的 1 个

r - 为会计年度分配日期

r - 如何计算不同群体的共同值(value)?

r - 将生存数据从宽转换为长

r - mutate_at 出现 "Variable context not set"错误,dplyr 版本 >= 0.7