2014-12-02 200 views
0

我发现了许多解决方案,但没有这种方式。我有一个矩阵列表,需要将它们作为矢量。我可以拿每个元素,命名它,并把它放在一个向量中。但我确定有更好的方法!将矩阵列表转换为向量

zerooklein <- lapply(1:10, function(x){genweb(10, 5, dens=2)}) 
zeroomittel <- lapply(1:10, function(x){genweb(10, 20, dens=2)}) 
zeroogroß <- lapply(1:10, function(x){genweb(10, 80, dens=2)}) 

这些是我的清单。

size <- c(this should contain all the singel matrices) 
sizef <- sapply(size, function(x) nested(get(x), method="ALL")) 
plot(capscale(formula = scale(sizef) ~ 1)) 

这就是我想要对他们做的事情。

+0

您的问题似乎并没有什么意义。 'nested'函数使用'web'作为参数,而不是一个向量。你应该提供更多的上下文,以便其他人可以理解你正在努力完成的事情。更好的是,提供中间对象应该是什么样子的例子。 – cdeterman 2014-12-02 13:32:12

+0

我想在几个矩阵(zeroo)上应用几个度量(ALL)。所以'size'应该是singel矩阵的(名称)的向量。所以嵌套可以采取每个矩阵并应用所有方法。然后它应该为每个矩阵返回一个带有计算量度的向量。 – pitri 2014-12-02 15:36:57

回答

0

如果您想要使用您的LISTS的名称,请注意'zeroo ...'对象不是矢量,您可以明确创建该矢量。整个过程中唯一的向量是以下一行:

size <- c("zerooklein", "zeroomittel", "zeroogroß") 

现在剩下的就是所有的列表和矩阵。每个'zeroo ...'对象都是一个矩阵列表,因此必须循环传递给nested。因此,您不仅需要遍历每个'zeroo ...'对象,还要遍历'zeroo ...'中的每个矩阵,因此是一个双重循环。下面的电话会完成这项工作。

sizef <- lapply(size, function(x) sapply(get(x), function(y) nested(y, method="ALL"))) 

你不能只用两个sapply语句,否则它会自动“rbind”你的结果放在一起,它看起来是不是你的目标。因此,此时您有三个矩阵的列表。您可以将它们与do.call合并。现在

size_merged <- do.call("cbind", sizef) 

,你可以画出你的最终矩阵

plot(capscale(scale(size_merged) ~ 1))