如何在行数变化时绑定向量和矩阵
在迭代算法中,我在每个步骤中确定一个或多个行或多个行以进行进一步计算。为了存储感兴趣的行,我必须绑定两个变量:X.id和X.val。我目前使用:如何在行数变化时绑定向量和矩阵
X.id <- matrix(1,nrow=2,3)
X.val <- matrix(1,nrow=2,1)
cbind(X.id,X.val)
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 1 1 1 1
但不是当他们一行:
X.id <- c(1,1,1)
X.val <- matrix(1,nrow=1,1)
cbind(X.id,X.val)
其中给出
cbind(X.id,X.val)
它当X.id和X.val都是矩阵工作正常出现以下错误:
In cbind(c(1, 1, 1), matrix(1, nrow = 1, 1)) : number of rows of result is not a multiple of vector length (arg 1)
该pro当行的数量是0,1和n时,求解解决方案应该工作,同时保存矩阵的维数!
我相信你正在寻找append(X.id,X.val)
追加工作正常如果X.id和X.val有一行,但如果他们有多个它给一个向量,而不是矩阵 – WAF 2013-04-25 07:11:15
@FWaldner你可能想让你的问题更清楚,然后提供一个失败的例子。 Append在您提供的示例中工作,并且afaik通过了您最初制定的条件。 – 2013-04-25 07:49:36
的问题是有点不清楚至于id
和value
之间的关系。 您所寻求的解决方案很可能是使用list
作为@ cyro111在评论中描述的。
使用cbind
不会给你你想要的结果,因为它会强制X.id
成列。 (当然,除非你是这样,否则你的问题有点不清楚)。
你也可以简单地使用c()
作为
> c(X.id, X.val)
[1] 1 1 1 1
同样,只有当X.id有一行 – WAF 2013-04-25 07:16:23
@FWaldner时,它才能正常工作,正如Maxim.K所指出的那样,您的问题是非常不清楚的。如果你期望X.id是多维的,那么在你的问题中应该是明显的。 – 2013-04-25 14:43:36
使用'rbind'绑定 – dickoa 2013-04-24 15:33:20
您也可能会寻找[cbind.fill(http://*.com/q/7962267/行324364)。 – joran 2013-04-24 15:34:24
我建议使用列表而不是矩阵来存储您的值。像'x = list()'然后迭代'x [[length(x)+1]] = your_vector'。 – cryo111 2013-04-24 15:40:44