R 从字符向量的内容恢复数据帧

R 从字符向量的内容恢复数据帧,r,dataframe,character,R,Dataframe,Character,我正在处理一个长字符向量,其中每一行都应该包含一个小数据帧。我创建了一个函数来清理数据并生成一个字符串,该字符串将准备好输入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 Skywalk

我正在处理一个长字符向量,其中每一行都应该包含一个小数据帧。我创建了一个函数来清理数据并生成一个字符串,该字符串将准备好输入
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数据帧的最佳方式是什么

这里有一种方法,但重申我的意见-可能有更好的方法将原始数据转换为经过清理的数据帧

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

x如果可以将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))

x虽然有一种方法可以做到这一点,但我认为有更好的方法可以将原始数据转换为干净的数据帧。你也应该考虑问一个单独的问题,如果你将数据.Frand()添加到字符串中,这将是相当简单的,你有理由不这样做吗?您的代码本身不是有效的r表达式,因此解析函数出错。非常感谢您的快速回复!按照Shree和Elin的建议,对原始数据应用
eval(parse(text=paste('data.frame(',data,')))
,这项工作做得非常好,效率也更高。谢谢你,祝你一切顺利!好的,我的几乎一样,但差别很大,所以我就不谈了。
x <- "data.frame(
  'demomemberseducationmember' = c('High_school','High_school'), 
  'demomembersstatus' = c('Other', 'Other'), 
  'demmembersname' = c('Hans Solo', 'Luke Skywalker'))"
eval(rlang::parse_expr(x))