【发布时间】:2020-11-11 20:42:48
【问题描述】:
我想重复向量“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 是 170 000 x 250 矩阵,A 是 1x250 向量,考虑到应用比循环。
我尝试运行以下应用命令:
apply(a, 1, function(x,y) rep(y,x), x=a, y=A)
但它不起作用,因为a 不是a 的行,而是整个矩阵,我不知道如何在应用中引入a 行。我也无法下载软件包。你能帮帮我吗?
【问题讨论】:
-
试试
apply(a, 1, function(x) rep(A, x))。