R 根据矩阵中的值重复向量元素
我想重复向量“a”中的每个元素,在矩阵“a”中指定的次数。矩阵中的列对应于向量中的每个元素。应用的重复次数从矩阵行中获得R 根据矩阵中的值重复向量元素,r,apply,rep,R,Apply,Rep,我想重复向量“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是170 000 x 250矩阵,a是1x250向量,考虑到
A <- c("China", "Alabama")
a <- matrix(c(1,2,1,0),2,2)
a
# [,1] [,2]
# [1,] 1 1
# [2,] 2 0
这可以通过双循环轻松实现,但在我的实际案例中,a
是170 000 x 250矩阵,a是1x250向量,考虑到apply比循环快,我正在尝试使代码尽可能快
我尝试运行以下应用命令:
apply(a, 1, function(x,y) rep(y,x), x=a, y=A)
但它不起作用,因为
a
不是一行a
,而是整个矩阵,我不知道如何在apply中引入a
行。我也不能下载软件包。您能帮我吗。您可以将lappy
与asplit
和rep
一起使用
lapply(asplit(a,1), rep, x=A)
#[[1]]
#[1] "China" "Alabama"
#
#[[2]]
#[1] "China" "China"
另一个基本R选项
> lapply(data.frame(t(a)),rep, x = A)
$X1
[1] "China" "Alabama"
$X2
[1] "China" "China"
尝试
应用(a,1,函数(x)rep(a,x))
。有关所需输出的最佳解决方案。
> lapply(data.frame(t(a)),rep, x = A)
$X1
[1] "China" "Alabama"
$X2
[1] "China" "China"