我在map函数中使用ifelse语句出现问题:
我只想以如下方式组织此列表中的每个数据框:
我在使用map
函数时遇到了ifelse
语句的问题:
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
函数应该能解决问题。 - wwwifelse
。在这里,最好使用if/else
。根据文档,“值-与测试和数据值的属性(包括维度和“类”)相同的向量,从是或否的值中获取数据值。”'test'是逻辑向量,这是正确的,但长度为1。'yes'是一个数据框/ tibble而不是向量,并且行数与'no'不同。您可以将其包装在list
中以获得'yes','no'的长度1。但是,在这里我避免使用ifelse。 - akrun