在R中的矩阵行上迭代,是比for循环(apply?lappy?)更好的方法吗

在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)]

我是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您能提供
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)