Есть ли способ вызвать фрейм данных внутри функции с использованием paste0? (Имейте в виду, что переменная является динамической)

#r

#r

Вопрос:

Я пытаюсь автоматизировать некоторые процессы для оповещений по электронной почте, поэтому мне приходится вызывать разные фреймы данных с разными группами электронных писем и именами. Я не могу вызвать фрейм данных с помощью paste0 , у меня закончились идеи, буду признателен за любую обратную связь.

Я ответил на множество вопросов, но ни один из них не отвечает на то, что я хочу сделать.

В следующем коде i является предыдущим значением для других автоматизированных процессов.

 for (u in 1:i) {



for (g in 1:length(Milestone_data$Milestone_Column_Name)) {



  for (a in 1:length(Merged_table1$`Review ID`)) {

    if (!is.na(paste0("Merged_table",u)[,c(Milestone_data$Milestone_Column_Name[g])][a])){
      print(paste0(g, a))

      if (paste0("Merged_table",u)[, Milestone_data$Milestone_Column_Name[g]][a] <= (Sys.Date()   weeks(2)) amp; paste0("Merged_table",u)[, Milestone_data$Milestone_Column_Name[g]][a] >= (Sys.Date())){
        newrow <- (c(paste0("Merged_table",u)[["EMAIL"]][a], paste0("Merged_table",u)[a,c(1)], paste0("Merged_table",u)[["Review Category"]][a], Milestone_data$Milestone_Column_Name[a], as.Date(paste0("Merged_table",u)[, Milestone_data$Milestone_Column_Name[g]][a],"%Y-%m-%d") ))
        paste0("x",u) <-InsertRow(paste0("x",u), NewRow = newrow)

      }

    } 
  }
}
}
  

Ошибка в paste0(«Merged_table», u)[,
Milestone_data$Milestone_Column_Name[g]] : неверное количество
размеры.

Это ошибка, которую я получаю — оптимальным результатом было бы иметь три разных фрейма данных из трех исходных, которые соответствуют условиям, которые я установил в формуле.

Приветствуется любая помощь. Спасибо

Ответ №1:

вам нужна get функция. Рассмотрим этот простой пример:

 x_1 <- 11

paste0("x_", 1) * 2
  

Ошибка в paste0(«x_», 1) * 2: нечисловой аргумент двоичного оператора

 get(paste0("x_", 1)) * 2
[1] 22
  

Комментарии:

1. Большое вам спасибо, вы спасли меня! Теперь мой код работает.