我有一个数据集
data <- cbind(c(1,2,3),c(1,11,21))
我想根据vector
给出的列号从每行中提取一个元素selectcol <- c(1,2,2)
在特定情况下,结果应为
结果
1
11
21
我试过了
resul<-apply(data, 1, [,selectcol])
但它不起作用
答案 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