【发布时间】: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])
但它不起作用
【问题讨论】:
我有一个数据集
data <- cbind(c(1,2,3),c(1,11,21))
我想根据向量给出的列号从每一行中提取一个元素
selectcol <- c(1,2,2)
在那种特殊情况下,结果应该是
结果
1
11
21
我试过了
resul<-apply(data, 1, [,selectcol])
但它不起作用
【问题讨论】:
您可以使用col 将值与selectcol 和子集data 匹配。
data[col(data) == selectcol]
# [1] 1 11 21
【讨论】:
如果你尝试怎么办
selection <- cbind(1:3, selectcol)
result <- data[sel]
【讨论】:
这对我来说使用了一个函数:
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
【讨论】: