R:在循环中创建seq(0,9)时出现的问题

R:在循环中创建seq(0,9)时出现的问题,r,seq,R,Seq,我试图在R中编写函数,但遇到了一个序列问题: vincent <- function(v,n, val_min){ # v = vector to vincentize n = number of bin +1 mean_vct <- array(0, n) # n = nb de bins; crée un vecteur de 5 zéros si n = 5 vsort <- sort(v) vsort <- sort(subset(vsort,

我试图在R中编写函数,但遇到了一个序列问题:

vincent <- function(v,n, val_min){
  # v = vector to vincentize n = number of bin +1 
  mean_vct <- array(0, n) # n = nb de bins; crée un vecteur de 5 zéros si n = 5
  vsort <- sort(v)
  vsort <- sort(subset(vsort, vsort>= val_min))
  for (j in seq(1,n) ){
    mean_vct[j] <- (val_inf(j,vsort,n) + val_inter(j,vsort,n) + val_sup(j,vsort,n))
    mean_vct[j] <- mean_vct[j]/(length(vsort)/(n))
   }
  return (mean_vct)
}

值得注意的是,
array
确实适用于多维数组。您可以使用
mean\u vct启动
mean\u vct
,您的代码有几个问题

vincent <- function(v,n){
  # v = vector to vincentize n = number of bin
  mean_vct <- array(0, n)
  vsort <- sort(v) #Tri dans l'ordre les TR
  for (j in seq(0,9)){ #pour chaque bin
    mean_vct[j] <- j
  }
  return (mean_vct)
}

vincent R索引从1开始,而不是从0开始。它与Python不同。基本上,您在函数中所做的只是返回
0:9
。你想要的产量是多少?你想实现什么?是的,我知道这一点,我想我可以通过创建一个从0开始的序列来克服它,难道没有办法使用一个从0开始的序列的循环吗?请添加像vincent(1:3,3)这样的函数调用,以便我们可以复制你的样本。seq(0,9)返回:0 1 2 3 4 6 7 8 9,这与0:9(j-1)相同解决方案非常有效!非常感谢你!谢谢你的回答,从现在起我将知道矢量化代码的使用。
mean_vct <- 0:9
names(mean_vct) <- 0:9
vincent <- function(v,n){
  # v = vector to vincentize n = number of bin
  mean_vct <- array(0, n)
  vsort <- sort(v) #Tri dans l'ordre les TR
  for (j in seq(0,9)){ #pour chaque bin
    mean_vct[j] <- j
  }
  return (mean_vct)
}