【问题标题】:Subset one element of a row based on vector of column number根据列号向量对行的一个元素进行子集化
【发布时间】:2014-11-02 23:13:05
【问题描述】:

我有一个数据集

data <- cbind(c(1,2,3),c(1,11,21))

我想根据向量给出的列号从每一行中提取一个元素

selectcol <- c(1,2,2)

在那种特殊情况下,结果应该是

结果

1
11
21

我试过了

resul<-apply(data, 1, [,selectcol])

但它不起作用

【问题讨论】:

    标签: r subset


    【解决方案1】:

    您可以使用col 将值与selectcol 和子集data 匹配。

    data[col(data) == selectcol]
    # [1]  1 11 21
    

    【讨论】:

      【解决方案2】:

      如果你尝试怎么办

       selection <- cbind(1:3, selectcol)
       result <- data[sel]
      

      【讨论】:

        【解决方案3】:

        这对我来说使用了一个函数:

        data <- data.frame(cbind(c(1,2,3),c(1,11,21)))
        
        selectcol <- c(1,2,2)
        
        elems<-vector()
        extract_elems <- function(data, selectcol) {
          for ( i in 1:length(selectcol)) {
            elems <- append(elems,data[i,selectcol[i]])
          }
          return(elems)
        }
        
        output <- extract_elems(data,selectcol)
        
        > output
        [1]  1 11 21
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-13
          • 2015-01-17
          • 2019-02-21
          • 2018-03-30
          • 2021-10-13
          • 2014-07-30
          • 2015-03-06
          相关资源
          最近更新 更多