根据列号向量子集一行的一个元素

时间:2014-11-02 23:13:06

标签: r subset

我有一个数据集

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

我想根据vector

给出的列号从每行中提取一个元素
selectcol <- c(1,2,2)

在特定情况下,结果应为

结果

1
11
21

我试过了

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

但它不起作用

3 个答案:

答案 0 :(得分:4)

如果你尝试

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

这对我来说很有用:

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