【问题标题】:Using row-wise column indices in a vector to extract values from data frame [duplicate]使用向量中的逐行列索引从数据框中提取值[重复]
【发布时间】:2020-04-06 06:16:37
【问题描述】:

使用列位置索引的向量,例如:

> i <- c(3,1,2)

如何使用索引从数据框的第一行中提取第三个值、第二行中的第一个值、第三行中的第二个值等。

例如,使用上面的索引和:

> 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"

【问题讨论】:

    标签: r


    【解决方案1】:

    这个怎么样:

    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"
    

    【讨论】:

      【解决方案2】:

      只需使用矩阵索引,如下所示:

      dframe[cbind(seq_along(i), i)]
      # [1] "g" "b" "f"
      

      cbind(seq_along(i), i) 部分创建一个包含您要提取的相关行和列的两列矩阵。

      【讨论】:

        猜你喜欢
        • 2018-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多