在R中的矩阵行上迭代,是比for循环(apply?lappy?)更好的方法吗
我是R新手,虽然我真的很喜欢整个apply、lapply和sapply工具集,但我并不总是知道如何应用它们 简而言之,我所做的就是这样。向量中有一组名称。我有一个矩阵,其中的行是值(1,0),如果这些名称应该包括在内在R中的矩阵行上迭代,是比for循环(apply?lappy?)更好的方法吗,r,matrix,rbind,R,Matrix,Rbind,我是R新手,虽然我真的很喜欢整个apply、lapply和sapply工具集,但我并不总是知道如何应用它们 简而言之,我所做的就是这样。向量中有一组名称。我有一个矩阵,其中的行是值(1,0),如果这些名称应该包括在内 mynames <- c("Bob", "Ted", "Carol", "Alice") myvec <- c(1,0,1,0) mynamemat <- matrix(mynames,1,4) mynamemat[,as.logical(myvec)]
mynames <- c("Bob", "Ted", "Carol", "Alice")
myvec <- c(1,0,1,0)
mynamemat <- matrix(mynames,1,4)
mynamemat[,as.logical(myvec)]
mynames您能提供mynamemat
吗?另外,还不清楚在您的问题中,mynamemat
扮演什么角色。mynamemat如果@khasha是正确的,那么您正在寻找类似t(apply(myvecmat,1,function(x)mynamemat[,as.logical(x)])
,尽管我不知道在循环中如何优于您的。抱歉,我添加了它。我没有意识到我遗漏了这一点。或者像这样的lappy(as.data.frame(t(myvecmat)),function(x)mynamemat[,as.logical(x)])
myvecmat <- matrix(myvec,1,4)
myvecmat <- rbind(myvecmat,c(1,1,0,0))
myvecmat <- rbind(myvecmat,c(0,0,1,1))
out_list <- list(c())
for(row in 1:nrow(myvecmat)) {
out_list[[row]] <- mynamemat[,as.logical(myvecmat[row,])]
}
print (out_list)