我想选择以下数据框的特定值:
src:
c1 c2 c3 c4 c5 c6
rA 9 12 44 88 11 1
rB 12 7 14 24 48 67
rC 0 15 97 17 13 18
rD 74 51 10 11 14 8
通过存储在数据框中的索引(具有与列相同的列名和行名作为值):
idx:
c1 c4 c6
1 rA rD rA
2 rD rA rB
3 rB rC rC
所以结果应该是这样的:
res:
1 2 3
1 9 11 1
2 74 88 67
3 12 17 18
请问最优雅的方法是什么?
给定原始帧的定义如下:
src <- data.frame(matrix(c(9, 12, 44, 88, 11, 1,
12, 7, 14, 24, 48, 67,
0, 15, 97, 17, 13, 18,
74, 51, 10, 11, 14, 8), nrow = 4, byrow = TRUE))
rownames(src) <- paste0("r", LETTERS[1:4])
colnames(src) <- paste0("c", 1:6)
idx <- data.frame(matrix(c("rA", "rD", "rB",
"rD", "rA", "rC",
"rA", "rB", "rC"), nrow = 3),
stringsAsFactors = FALSE)
colnames(idx) <- c("c1", "c4", "c6")
可以用以下方法解决sapply
:
sapply(colnames(idx), function(col) {
src[idx[, col], col]
})
它产生具有预期结果的矩阵:
c1 c4 c6
[1,] 9 11 1
[2,] 74 88 67
[3,] 12 17 18
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句