R Loop для ссылки на несколько фреймов данных - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь создать цикл для извлечения данных из нескольких фреймов данных в R, а затем связать их в один фрейм данных. Все кадры данных называются одинаково, с добавлением в конце приращения (split1, split2, split3 ...) для дифференциации.

Каждый фрейм данных содержит список чисел, которые я хочу добавить в URL.

Цикл, который я построил до сих пор, выглядит следующим образом:

requester_url <- "https://example.url/users/show_many/ids="
for(i in 1:7 {
  splitname <- paste0('split',i)
  requester_ids <- paste0(splitname, collapse = ",")
  requester_url <-paste0(requester_url,requester_ids)
}

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

splitname <- paste0('split',i)

Я надеюсь, что это выведет 'split1, split2, split3 ...', на которые затем будут ссылаться в следующей части цикла.

requester_ids <- paste0(splitname, collapse = ",")

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

И, наконец, последняя часть цикла должна взять переменную url и добавить все идентификаторы в предыдущей строке и завершиться как: «https://example.url/users/show_many/ids=11111,22222,33333...."

Я полагаю, что проблема в первой строке, где она хранит имя фрейма данных как символ, а не как имя переменной.

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

1 Ответ

0 голосов
/ 28 июня 2018

Как вы указали, проблема заключается в использовании строки имени таблиц, а не самих таблиц. Вам просто нужно «получить», чтобы ваш код работал.

split1 <- 100:109
split2 <- 200:209
split3 <- 300:309
split4 <- 400:409
split5 <- 500:509
split6 <- 600:609
split7 <- 700:709
requester_url <- "https://example.url/users/show_many/ids="
for(i in 1:7) {
  splitname <- paste0('split',i)
  requester_ids <- paste0(get(splitname), collapse = ",")
  if (i>1) sep <- ',' else sep <- ''
  requester_url <- paste(requester_url,requester_ids,sep=sep)
}

Но лучшим решением было бы вообще не делать никаких циклов: сначала объединить (rbind) 7 наборов данных, а затем свернуть результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...