为什么我的索引在r中变为零

时间:2017-01-28 15:21:53

标签: r for-loop indexing

data = matrix(1:12, 3,4)
n=ncol(data)
m=nrow(data)

for (i in 1:m){
  for (j in 1:n-1){
    missindex = sample(1:n,j)
    temp <- data[,-missindex]
    distances <- dist(temp)[1:m-1]
    similarity <- 1-distances/max(distances)
    order_indexes <- order(similarity,decreasing = T)
    similarity_order <- similarity[order_indexes]
    for (k in 1:m-1){
      weights <- similarity_order[1:k]/sum(similarity_order[1:k])
      imputedata <- crossprod(data[order_indexes[1:k]+1,missindex], weights)
      MAE <- mean(abs(imputedata-data[i,missindex]))
      RMSE <- sqrt(mean((imputedata - data[i,missindex])^2))
      MAPE <- mean(abs((imputedata-data[i,missindex])/data[i,missindex]))
    }
  }
}

它给了我以下错误:

  

crossprod中的错误(data [order_indexes [1:k] + 1,missindex],权重):     不一致的论点

当我检查k为0时,但在我的代码中k是从1到m-1。

1 个答案:

答案 0 :(得分:0)

1:n-1不是1,...,n-1,而是0,...,n-1,因为:的优先级高于+

而不是1:n-1,请使用seq(n-1)1:(n-1)