使用R

时间:2017-06-19 20:35:35

标签: r string dataframe

如何从以下字符串创建数据框:

my_str <- "a=1, b=2"

换句话说,我如何将y提供给data.frame或data.table函数,以便它为我提供与

相同的功能。
data.frame(a=1, b=2)

考虑如何通过简单地使用my_str <- "y~x1+x2+x3"轻松地将表格as.formula(my_str)的字符串传递到R中的统计模型,并有效地删除引号。所以我正在寻找类似的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:3)

我强烈反对您将代码存储为R中的字符串。几乎总有更好的方法来编写不需要解析字符串的R代码。

但我们假设您没有其他选择。然后你可以编写自己的解析器,或使用R的内置解析器。它本身的表达式“a = 1,b = 2”在R中没有任何意义(你不能用逗号分隔两个“赋值”)所以它只作为函数的参数才有意义。

如果您想将其打包在data.frame()中,那么您可以使用paste()制作所需的字符串,然后使用parse(),最后eval()来运行它< / p>

my_str <- "a=1, b=2"
my_code <- paste0("data.frame(", my_str, ")")
my_expr <- parse(text=my_code)
eval(my_expr)
#   a b
# 1 1 2

但就像我已经提到eval/parse should generally be avoided