Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据矩阵中的值重复向量元素_R_Apply_Rep - Fatal编程技术网

R 根据矩阵中的值重复向量元素

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”中的每个元素,在矩阵“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向量,考虑到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"