R кадр данных из содержимого символьного вектора - PullRequest
0 голосов
/ 18 ноября 2018

Я работаю с длинным символьным вектором, где каждая строка должна содержать небольшой фрейм данных.Я создал функцию для очистки данных и создания строки, которая будет готова для ввода в функцию data.frame().Вывод выглядит следующим образом:

[1] "`demo/members/education_member` = c('High_school', 'High_school'), `demo/members/status` = c('Other', 'Other'), `demo/members/name` = c('Hans Solo', 'Luke Skywalker')"

Я хотел передать этот вывод в data.frame(), чтобы получить следующий кадр данных (полученный в результате копирования и вставки вышеприведенного вывода без кавычек и передачи его в функцию data.frame):

  demo.members.education_member demo.members.status demo.members.name
1                   High_school               Other         Hans Solo
2                   High_school               Other    Luke Skywalker

Вопрос : Как лучше всего преобразовать содержимое вывода символов в кадр данных R?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Это способ сделать это, если есть возможность добавить функцию data.frame () в вашу строку.Если нет, дайте мне знать, и я удалю.Это немного быстро и грязно и использует rlang, но вы можете сделать это лучше, не используя base eval и вместо этого разбираясь в квази-цитате rlang.

x <- "data.frame(
  'demomemberseducationmember' = c('High_school','High_school'), 
  'demomembersstatus' = c('Other', 'Other'), 
  'demmembersname' = c('Hans Solo', 'Luke Skywalker'))"
eval(rlang::parse_expr(x))
0 голосов
/ 18 ноября 2018

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

x <- "`demo/members/education_member` = c('High_school', 'High_school'), `demo/members/status` = c('Other', 'Other'), `demo/members/name` = c('Hans Solo', 'Luke Skywalker')"

y <- paste0("data.frame(", x, ")")

eval(parse(text = y))

demo.members.education_member demo.members.status demo.members.name
1                   High_school               Other         Hans Solo
2                   High_school               Other    Luke Skywalker
...