R 矩阵和向量列表的映射在特定情况下效果不佳

R 矩阵和向量列表的映射在特定情况下效果不佳,r,R,在以下情况下,函数mapply()似乎无法正常工作: a <- list(matrix(1:8,4,2),matrix(1:9,3,3)) b <- list(1:4,1:3) mapply(a,b,FUN=cbind) 而不是以下(预期)结果: 有人能帮我理解我的代码中是否有错误吗?谢谢大家! 确保将SIMPLIFY设置为false mapply(a,b,FUN=cbind, SIMPLIFY=FALSE) 否则,mapply会尝试将所有内容强制为一个兼容的单一结果。在您的例

在以下情况下,函数
mapply()
似乎无法正常工作:

a <- list(matrix(1:8,4,2),matrix(1:9,3,3))
b <- list(1:4,1:3)
mapply(a,b,FUN=cbind)
而不是以下(预期)结果:


有人能帮我理解我的代码中是否有错误吗?谢谢大家!

确保将SIMPLIFY设置为false

mapply(a,b,FUN=cbind, SIMPLIFY=FALSE) 
否则,
mapply
会尝试将所有内容强制为一个兼容的单一结果。在您的例子中,因为每个调用的返回有12个元素,所以它将这两个元素并排放在一个矩阵中,第一个矩阵值在第一列,第二个矩阵在第二列

或者,您可以使用

Map(cbind, a, b) 

它总是返回一个列表。(
Map
也很好,因为如果
a
有名称,它将在结果列表中使用这些名称,这些名称在本例中不有用,但在其他情况下可能有用。)

默认情况下,
mapply
将尝试将结果强制到数组中。使用参数
SIMPLIFY=FALSE
获得预期结果。很遗憾,这不是默认值。我不记得有一次我使用了
mapply
,不需要指定
SIMPLIFY=FALSE
。谢谢你,使用“SIMPLIFY=FALSE”它工作得很好,尽管很奇怪,如果你将元素的数量改成两个列表,“mapply”在不使用“SIMPLIFY=FALSE”的情况下工作得很好@Flick先生,作为答案发布?
mapply(a,b,FUN=cbind, SIMPLIFY=FALSE) 
Map(cbind, a, b)