【发布时间】:2015-04-21 11:44:07
【问题描述】:
我正在尝试编写一个在 mapply 中使用的函数,该函数涉及两个列表和一个数据框。我想挑选出由两个列表(用于行和列)索引的几个数据子集。这是我想在循环中执行的操作的示例,以及我对该函数的尝试:
#simulated data and column, row indexes
set.seed(100)
d <- data.frame(matrix(1:100,nrow=10,ncol=10))
y <- lapply(vector("list", 5),function(x){sample(1:10,5)})
x <- as.list(c(1,3,5,7,9),length=5)
# version in loop
whatiwant <- list(length=5)
for (i in 1:5){
whatiwant[[i]] <- d[y[[i]],x[[i]]]
}
fun <- function(x,y,d){d[y,x]}
whatiwant2 <- mapply(fun,y,x,MoreArgs=d)
根据给出的错误,我怀疑 mapply 正在尝试将此函数应用于 d 的每一列;我该如何避免这种情况?如果我只索引一个维度(例如行)和单个列,则使用 lapply 的等价物是:
onedim <- lapply(y,function(d,y){d[y]},d=d[,1])
【问题讨论】:
标签: r