有没有办法在R中的for循环中使用which参数?

时间:2019-07-31 03:51:37

标签: r loops which

我正在尝试编写一个for循环,以在每个索引中找到最高的100个(例如)变量,并将它们重新分配为第100个最高值。 for循环从索引的最大值开始,并进行测试以查看与最大值匹配的案例数是否超过阈值。如果少于100个案例与最大值匹配,则将最大变量减小1并再次运行。如果100个或更多案例匹配,则将最大值调整回先前的值,并为案例分配该值。

我正尝试在数据集上实际使用此值,以将最高0.075%和最低0.075%的值分别调整为新的最大值和最小值,而不会超过0.75%的阈值。我的实际数据有40万个案例和170个功能,我正在尝试使用此功能。

如果有更好的方法来执行上述操作,则无需修复此问题。

df应该具有:a = 100例的0-100和101,b = 100例的100-200和201,c = 100例的200-300和301。

我试图在if和else语句中使用length(which(df [i])),并认为将其分配给变量可能有帮助,但没有帮助。

a=c(0:200) 
b=c(100:300)
c=c(200:400)
df <- data.frame(a, b, c)  

for (i in 1:length(df)){
  max_count <- length(which(df[i]))
  maximum <-max(df[i])
  if (((max_count > maximum) < 100) == FALSE){
    maximum <- maximum -1
  }
  else if (((max_count > maximum) >= 100) == TRUE){
    df[i](which(df[i] > maximum +1)) <- maximum +1
  }
}

>>> Error in which(df[i]) : argument to 'which' is not logical

0 个答案:

没有答案