假设我有一个看起来像这样的数据框:

dframe = data.frame(x = c(1, 2, 3), y = c(4, 5, 6))
#   x y
# 1 1 4
# 2 2 5
# 3 3 6
还有一个列名向量,数据帧的每一行一个:colname = c('x', 'y', 'x')对于数据帧的每一行,我想从向量的相应列中选择值。类似于dframe[, colname],但每一行都有。
因此,我想获取c(1, 5, 3)(即第1行:col“x”;第2行:col“y”;第3行:col“x”)

最佳答案

我最喜欢的旧矩阵索引将解决此问题。只需传递一个具有各自行/列索引的2列矩阵:

rownames(dframe) <- seq_len(nrow(dframe))
dframe[cbind(rownames(dframe),colname)]
#[1] 1 5 3

或者,如果您不想添加行名:
dframe[cbind(seq_len(nrow(dframe)), match(colname,names(dframe)))]
#[1] 1 5 3

关于r - 使用列名称变量按行选择数据帧值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51093685/

10-11 02:14