如何将子集对象字符串名称转换为 R 中的可用对象?
How do I convert a subsetted object character string name to a usable object in R?
假设我有一个子集对象名称的字符串。例如:
foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)] #is currently represented as...
"foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)]"
我想用对象名称的字符串来调用子集对象。
我尝试使用 get()
:
get("foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)]")
但我收到错误:
Error in "foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)]":
object "foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)]" not found
我假设有一种方法可以使用子集对象来做到这一点(相对于我知道有效的对象名称)。
提前致谢!
正如@MrFlick 在评论中提到的,您可以这样做:
eval(parse(text="foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)]"))
parse
将字符串转换为 expression
并且 eval
计算出 expression
.
不过,这在 R 中通常被认为是一种不好的做法,请参阅 here
假设我有一个子集对象名称的字符串。例如:
foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)] #is currently represented as...
"foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)]"
我想用对象名称的字符串来调用子集对象。
我尝试使用 get()
:
get("foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)]")
但我收到错误:
Error in "foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)]":
object "foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)]" not found
我假设有一种方法可以使用子集对象来做到这一点(相对于我知道有效的对象名称)。
提前致谢!
正如@MrFlick 在评论中提到的,您可以这样做:
eval(parse(text="foo$var1[foo$var2 < 10 & foo$var3 %in% c(0:100)]"))
parse
将字符串转换为 expression
并且 eval
计算出 expression
.
不过,这在 R 中通常被认为是一种不好的做法,请参阅 here