Проблема с l oop: аргумент длины 0 - PullRequest
0 голосов
/ 01 апреля 2020

Я попытался поработать над этим l oop и выдал следующие ошибки. Я не уверен, смогу ли я предоставить данные, при необходимости я приложу все усилия, чтобы скрыть данные. Вот l oop, который я пытаюсь использовать, любые советы о том, что я делаю неправильно, будут очень благодарны, так как я еще не нашел жизнеспособного решения. Точная ошибка ниже кода.

decay_function = function(df)
{
  df <- df[order(df$department,df$product,df$region,df$monthnum),]
  for(mk in 1:ncol(levels_department)) {
    newdata <- df[which(df$department==as.character(levels_department[,mk])), ]
    levels_product<-as.data.frame(t(levels(as.factor(newdata$product))))
    for(md in 1:ncol(levels_product)){
      newdata <- newdata[which(newdata$product==as.character(levels_product[,md])), ]
      levels_region<-as.data.frame(t(levels(as.factor(newdata$region))))
      for(dm in 1:ncol(levels_region)){
        newdata <- newdata[which(newdata$region==as.character(levels_region[,dm])), ]
        for(i in 1:(nrow(newdata)-1)){
          start_month = newdata$monthnum[i]
          end_month = newdata$monthnum[nrow(newdata)]
          row_vector = c()
          decay_vector = c()
          for(j in 5:ncol(newdata)){
            k = 0
            for(l in start_month:end_month){
              distance_initial = (l - start_month)
              vector_increment = (l - (start_month-1))
              decay_rate = (0.5)^((1/halflife)*distance_initial)
              decay_value = (decay_rate)*(newdata[[i,j]])
              k = k + decay_value
            }
            df2[i,j] = k
          }
          print(df2)
        }
        if (mk=='1' & md=='1' & dm=='1'){
          outdata<-df2
        } else {
          outdata<-rbind(outdata,df2)
        }
      }
    }
  }
}

output_data = decay_function(tempone)

Ошибка в start_month: end_month: аргумент длины 0

> dput(head(df))
structure(list(monthnum = c(33, 33, 33, 33, 33, 33), Region = c(2251, 
2251, 2251, 2251, 2251, 2251), Department = c("Softlines", "Softlines", 
"Softlines", "Softlines", "Softlines", "Softlines"), Product = c("T-Shirt", 
"Jacket", "Sweat Shirt", "Tank Top", "Sweat Pants", "Mens Jeans"
), Incentive_Amount = c(5742.43, 108006.61, 459076.67, 34006, 
141632.42, 29580.38), Leads_T1 = c(0, 0, 0, 0, 0, 0), DCLeads = c(0, 
1, 0, 0, 0, 0), PhoneLeads = c(0, 0, 0, 0, 0, 0), T3_CRM_Leads = c(0, 
0, 0, 0, 0, 0), Leads_Third = c(0, 1, 0, 0, 0, 0)), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -6L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...