0

这是问题的最小表示。假设我有一个矩阵Y,并且我试图X根据我对 中的元素执行的操作来填充矩阵Y。因为Y是一个大矩阵,我想X在一个 for 循环中填充相同的矩阵(为了节省时间和更少的数据结构来处理)。这是我到目前为止所拥有的。假设我的第一个 for 循环的条件是正确且必要的。

Y<- matrix(nrow= 109, ncol = 10064)
X<- matrix(nrow= 109, ncol = 10058)
k<- 1

# I want to start at the 7th column of Y and skip every other column
for (j in seq(7, 10058, 2)){ # this is how I want it to loop; this loops 5029 times

# assign new_values based on the column pairs in Y; ie look in each column pairf of Y 
# and create new values based on the columns pairs in Y: Y[,j] and Y[,j+1]

 for (i in 1:109){
    #if (Y[i,j] == new_value_1){
    #   X[i,k]<- 0
    #}
    #else if (Y[i,j] == new_value_2){
    #   X[i,k]<- 1
    #}
    #else if (Y[i,j] == new_value_3){
    #   X[i,k]<- 2
    #}
  }
 k<- k + 1
}

矩阵中的内容X并不Y重要。new_values不重要。这是我需要帮助的矩阵中的索引。X如果您运行上面的代码,您会注意到循环结束时iis 109(这是正确的)但k仅迭代到5027or 5028。换句话说,代码只填充了矩阵的一半。我希望 k 迭代到,10058以便我可以X正确填充矩阵。有人可以帮我解决这个问题吗?谢谢

4

1 回答 1

0

虽然我不知道如何应用于ifelse这个问题,但这似乎可以解决问题。

Y<- matrix(nrow= 109, ncol = 10064)
X<- matrix(nrow= 109, ncol = 10058)
k<- 1

for (j in seq(7, 10058, 2)){
    for (o in 1:2){
        for (i in 1:109){

        }
     }
   k<- k+1
   }
 }

在循环结束时k现在10058就像我想要的那样。而且i还在109

于 2012-11-15T05:02:22.237 回答