r - 拆分数据框并将函数应用于 R 中的 2 个不同行
问题描述
我正在尝试将 ami.meld
应用于 144 个数据框的列表,以便组合估计集及其标准错误。由于Amelia
不适用于列表,我将其取消嵌套到一个大数据框中,其中每 2 行对应于原始数据框。下面是我的数据(288 行)的快照。
我想找到一种快速的方法,不要重复该命令 144 次 mi.meld(data,q=data[1,],data[2,])
,和mi.meld (data,q=data[3,],data[4,])
,再 142 次......
所以,在第一种情况下q
应该是第一行的值向量,依此类推......
谢谢,卢卡斯
nn V1 V2 V3
ARE.1 1 357.85116 356.859011 359.432494
ARE.2 1 8.54784 7.450074 9.711469
ARE.3 2 503.99528 506.120967 507.520785
ARE.4 2 14.52657 12.129299 14.469123
AUS.1 3 421.60845 423.302610 425.196122
AUS.2 3 29.31331 27.230948 28.605672
解决方案
rownum <- seq_len(nrow(mtcars))
split(rownum, (rownum-1) %/% 2)[1:3]
# $`0`
# [1] 1 2
# $`1`
# [1] 3 4
# $`2`
# [1] 5 6
L <- lapply(split(rownum, (rownum-1) %/% 2), function(rn) mtcars[rn,])[1:3]
L
# $`0`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21 6 160 110 3.9 2.620 16.46 0 1 4 4
# Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4
# $`1`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
# Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
# $`2`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Hornet Sportabout 18.7 8 360 175 3.15 3.44 17.02 0 0 3 2
# Valiant 18.1 6 225 105 2.76 3.46 20.22 1 0 3 1
一旦你知道list
每个元素都是原始帧的 2 行子集,你可能会做类似的事情
lapply(L, function(x) ...)
...
你期望你的电话在哪里。
短一点:
ret <- lapply(split(rownum, (rownum-1) %/% 2), function(rows) {
if (length(rows) > 1) {
mi.meld(mtcars[rn[1],], mtcars[rn[2],])
}
})
})
推荐阅读
- oracle12c - 无法增加 sga_max_size。此系统错误不支持 MEMORY_TARGET
- java - 如何检查 JSON 响应是否返回 [ ] 或使用 Java 的正文响应?
- c++ - 使用变量与使用数字
- azure - 状态码 404:您要查找的资源已被删除、名称已更改或暂时不可用
- mysql - 将 Mysql 查询转换为弹性搜索
- powershell - MS Access 使用 Powershell 脚本插入 UTF-8
- laravel - 目标类不存在。- 拉拉维尔
- html - 如果溢出不起作用,则 fxFlex 和截断跨度
- database - 如何处理医疗成绩单数据集?
- xamarin.forms - SkiaSharp SVG 图像未正确填充屏幕