使用位置索引,例如:
> i <- c(3,1,2)
如何使用索引从data.frame的第一行中提取第三个值,从第二行中提取第一个值,从第三行中提取第二个值等等。
例如,使用上述索引和:
> dframe <- data.frame(x=c("a","b","c"), y=c("d","e","f"), z=c("g","h","i"))
> dframe
x y z
1 a d g
2 b e h
3 c f i
我想回复:
> [1] "g", "b", "f"
答案 0 :(得分:5)
只需使用矩阵索引,如下所示:
dframe[cbind(seq_along(i), i)]
# [1] "g" "b" "f"
cbind(seq_along(i), i)
部分会创建您要提取的相关行和列的两列矩阵。
答案 1 :(得分:0)
这个怎么样:
Df <- data.frame(
x=c("a","b","c"),
y=c("d","e","f"),
z=c("g","h","i"))
##
i <- c(3,1,2)
##
index2D <- function(v = i, DF = Df){
sapply(1:length(v), function(X){
DF[X,v[X]]
})
}
##
> index2D()
[1] "g" "b" "f"