Закрытие не является ошибкой подмножества при чтении файла CSV в R - PullRequest
0 голосов
/ 17 сентября 2018

Я совсем новичок в Р. Я новичок.У меня есть следующий код, который я написал, который является частью гораздо большего R-скрипта, который мне пришлось изменить.Смысл изменения заключается в следующем:

  1. Чтение в CSV-файле с двумя столбцами с именами «Имена проектов» и «Имена задач» - это источник правды

  2. Затем уже существует файл CSV, загруженный исходным сценарием, и данные в этом файле CSV хранятся в tabIn.- Этот файл обновляется пользователем (-ями).Пользователь вводит имя проекта и имя задачи (среди прочего), а затем загружает файл CSV в блестящий

  3. Моя цель здесь - прочитать в .csv из # 2 выше,Затем сравните выбранные имена проектов с именами задач.- Смысл этого состоит в том, чтобы убедиться, что имя задачи, указанное в файле .csv из # 2, принадлежит к тому же имени проекта в # 1 (источник правды).- Пользователи могут выбрать имя задачи, принадлежащей другому проекту.Смысл этого кода состоит в том, чтобы предотвратить это.- Если имя задачи из # 2 назначено неверному имени проекта, этот код должен предупредить.- Если имя задачи из # 2 вообще не существует в # 1 (источник правды), код также должен предупредить.

Когда я сам запускаю этот код в Rstudio.Работает без ошибок.Но когда я запускаю его в качестве оригинального скрипта, он выдает следующие ошибки:

"object of type 'closure' is not subsettable"

Ниже приведен код, который я написал и добавил в исходный скрипт:

  # Get the list of valid projectnames and valid tasknames from the dynamic source of truth
  taskNamesAndprojectNames <- read.table("/opt/task_name_controlled_vocabulary.tsv", header=TRUE, sep="\t")
  allowedProjects <- taskNamesAndprojectNames[,1]
  allowedTasks <- taskNamesAndprojectNames[,-1]
  cmbPntn <- setNames(as.list(allowedProjects), allowedTasks)
  ##############################################################################################
  # read in the .csv file which the user updates.  #2 above. The person who wrote this script already read in the csv file into tabIn.  
  # i dont want to play with that variable so I duplicate it to tabInB.
  tabInB <- tabIn
  ## split data.frame into name list of vectors
  split <- split(tabInB, tabInB$project_name)
  namedListManifest <- lapply(split, function(x){
   as.character(x[["task_name"]])
  })
  ##############################################################################################
  for (projectTaskName in tabIn$task_name){
     if(!grepl("^\\s*$", projectTaskName) && !grepl("string", projectTaskName )) {
        # For each taskname in the user submitted manifest excel (#2), check which project name is assigned to it
        projMatchChkUEM <- cmbPntn[[projectTaskName]]
        # If you find a taskname that is not found in the source of truth tsv file, error out and inform the user.
        if(is.null(projMatchChkUEM) || is.na(projMatchChkUEM) || grepl("^\\s*$", projMatchChkUEM)) {
                dataResult <- paste("Task [", projectTaskName, "] is not a valid Task Name. If this is a new Task Name you wish to add, please contact John or Jane to add it to the sc1 source of truth.")
                print(dataResult)
                # this will cause the script to abort in the shiny UI
                chkstatus <- 0
        } else {
                split <- split(taskNamesAndprojectNames, data$Project.Name)
                #print(split)
                ## split data.frame into name list of vectors
                namedList <- lapply(split, function(x){
                        as.character(x[["Task.Name.for.Manifest"]])
                })
                for (projName in tabIn$project_name){
                        #print(projectTaskName,projName)
                        if(!grepl("^\\s*$", projName) && !grepl("string", projName )) {
                                if(projectTaskName %in% namedListManifest[[projName]]) {
                                        if (!(projectTaskName %in% namedList[[projName]])){
                                                dataResult <- paste("Project [", projName, "] and Task [", projectTaskName, "] are incorrectly mapped! Check the [ sc1 ] source of truth file for the correct mappings!!!")
                                                print(dataResult)
                                                # this will cause the script to abort in the shiny UI
                                                chkstatus <- 0
                                        }
                                }
                        }
                }
          }
      }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...