来自字符向量内容的R数据帧

时间:2018-11-17 21:47:14

标签: r dataframe character

我正在使用一个长字符向量,其中每行应该包含一个小数据帧。我创建了一个函数来清除数据并生成一个字符串,该字符串可以随时输入到val myMap5 = myMap1.mapValues { valuesList => valuesList.flatMap { // here we use flatMap, to filter any None. valueKey => myMap2.get(valueKey).map(values => valueKey -> values) }.toMap } filter { case (_, values) => values.nonEmpty } // myMap5: Map[String, Map[String, List[Int]]] = Map( // testKey1 -> Map(testValue1 -> List(1, 2, 3), testValue2 -> List(5)), // testKey2 -> Map(testValue5 -> List(4, 5, 6)), // testKey4 -> Map(testValue10 -> List(7, 8, 9)) // ) 函数中。输出如下:

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

问题:将字符输出的内容转换为R数据帧的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

这是重申我的意见的一种方法-可能会有更好的方法将原始数据转换为清理的数据框。

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

答案 1 :(得分:0)

如果可以将data.frame()函数添加到字符串中,则可以使用此方法。如果没有通知我,我将删除。这有点麻烦,并且使用rlang,但是您可以通过不使用基数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))