r - 使用 lapply 和 ifelse 的数据帧的子集列表
问题描述
我有数据框列表:
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)
我想根据第一行中 b 列的值对数据帧进行子集化。
d <- lapply(d, function(x) ifelse(x[1,2] == 2006, x[-1,], x))
我试过上面的代码。我没有返回删除数据框 1 中第一行的数据框列表,而是得到以下信息:
[[1]]
[[1]][[1]]
[1] -1.0604320 -1.1117245 -0.2147006 1.0389965
[[2]]
[[2]][[1]]
[1] 1 2 3 4 5
预期输出如下:
[[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
解决方案
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
推荐阅读
- python - 输出被转换为编码形式,而不是像字符串一样保留在输入中
- spring - 在 Spring Integration 中使用 JSON 转换器
- angular - 如何创建带有细节抽屉的角卡?
- python - 加载具有自定义图层的模型时,Keras 中的形状不兼容
- node.js - 设置“proxy_set_header X-Forwarded-Proto $scheme;”的区别 nginx location {} 块的外部和内部
- collision - Phaser 3.17 不设置 tilemap 图层和玩家精灵之间的碰撞
- ios - 将导航栏设置为清除
- ios - 如果用户退出应用程序并且它们是全局的,NSUserDefaults 会保留吗?
- node.js - 从 dist 文件夹运行服务器时,cross NODE_ENV 不起作用
- vba - 如何将所有选定的邮件及其类别和接收时间保存到一个文件夹中?