R 使用lappy和ifelse的数据帧子集列表
我有数据帧列表:R 使用lappy和ifelse的数据帧子集列表,r,subset,R,Subset,我有数据帧列表: d1<-data.frame(a=rnorm(5), b=c(rep(2006, times=4),NA)) d2<-data.frame(a=1:5, b=c(2007, 2007, NA, NA, 2007)) d <- list(d1,d2) 预期产出如下: [[1]] a b 2 -1.0604320 2006 3 -1.1117245 2006 4 -0.2147006 2006 5 1.0389965 NA
d1<-data.frame(a=rnorm(5), b=c(rep(2006, times=4),NA))
d2<-data.frame(a=1:5, b=c(2007, 2007, NA, NA, 2007))
d <- list(d1,d2)
预期产出如下:
[[1]]
a b
2 -1.0604320 2006
3 -1.1117245 2006
4 -0.2147006 2006
5 1.0389965 NA
[[2]]
a b
1 1 2007
2 2 2007
3 3 NA
4 4 NA
5 5 2007
d1d1Atidyverse
library(tidyverse)
d %>%
map(~filter(.,1:n() != 1 | b != 2006))
[[1]]
a b
1 2.14889697 2006
2 0.05842311 2006
3 1.89911545 2006
4 -0.16836139 NA
[[2]]
a b
1 1 2007
2 2 2007
3 3 NA
4 4 NA
5 5 2007
Atidyverse
library(tidyverse)
d %>%
map(~filter(.,1:n() != 1 | b != 2006))
[[1]]
a b
1 2.14889697 2006
2 0.05842311 2006
3 1.89911545 2006
4 -0.16836139 NA
[[2]]
a b
1 1 2007
2 2 2007
3 3 NA
4 4 NA
5 5 2007
您的预期输出是什么?您的预期输出是什么?…谢谢您…但无法理解ifelse为什么不工作。请在控制台中键入?ifelse
。使用ifelse
查看示例。它与if(){}else{}
不同…谢谢…但无法理解为什么ifelse不工作。在控制台中键入?ifelse
。使用ifelse
查看示例。它与if(){}else{}
d1<-data.frame(a=rnorm(5), b=c(rep(2006, times=4),NA))
d2<-data.frame(a=1:5, b=c(2007, 2007, NA, NA, 2007))
d <- list(d1,d2)
d <- lapply(d, function(x) if(x[1,2] == 2006) x[-1,] else x)
#[[1]]
# a b
#2 0.5125665 2006
#3 -0.9842669 2006
#4 -1.9572385 2006
#5 -0.9411411 NA
#[[2]]
# a b
#1 1 2007
#2 2 2007
#3 3 NA
#4 4 NA
#5 5 2007
library(tidyverse)
d %>%
map(~filter(.,1:n() != 1 | b != 2006))
[[1]]
a b
1 2.14889697 2006
2 0.05842311 2006
3 1.89911545 2006
4 -0.16836139 NA
[[2]]
a b
1 1 2007
2 2 2007
3 3 NA
4 4 NA
5 5 2007