我想要重复向量"A"中的每个元素,次数由矩阵"a"指定。矩阵中的列对应向量中的每个元素,要应用的重复次数是逐行从矩阵中获取的。
A <- c("China", "Alabama")
a <- matrix(c(1,2,1,0),2,2)
a
# [,1] [,2]
# [1,] 1 1
# [2,] 2 0
在这个示例中,'a' 的第一行 (
[1,] 1 1
) 表示“中国”应该重复 1
次,“阿拉巴马州”应该重复 1
次,以此类推。结果应该是一个列表,每行矩阵对应一个元素。
output <- list(c("China", "Alabama"), c("China", "China"))
output
# [[1]]
# [1] "China" "Alabama"
#
# [[2]]
# [1] "China" "China"
这个可以通过双重循环轻松完成,但在我的实际案例中,a
是170000 x 250矩阵,而A是1x250向量,我尝试让代码尽可能地快,考虑到apply比loop更快。
我尝试运行以下apply命令:
apply(a, 1, function(x,y) rep(y,x), x=a, y=A)
但是它不起作用,因为
a
不是a
的行而是整个矩阵,我不知道如何在apply中引入a
的行。此外,我无法下载软件包。请帮我一下。
apply(a, 1, function(x) rep(A, x))
。 - Martin Gal