R 将文本转换为命令

R 将文本转换为命令,r,R,我想知道是否有办法将文本转换为命令并执行它。以下是我正在编写的脚本的相关部分: Var_name<- as.character(data_list[1,1]) U4005 以下代码应该可以工作: e <- "a <- 1" eval(parse(text = e)) a # [1] 1 e以下代码应该可以工作: e <- "a <- 1" eval(parse(text = e)) a # [1] 1 e以下代码应该可以工作: e <- "a <

我想知道是否有办法将文本转换为命令并执行它。以下是我正在编写的脚本的相关部分:

Var_name<- as.character(data_list[1,1])

U4005 

以下代码应该可以工作:

e <- "a <- 1"
eval(parse(text = e))
a
# [1] 1

e以下代码应该可以工作:

e <- "a <- 1"
eval(parse(text = e))
a
# [1] 1

e以下代码应该可以工作:

e <- "a <- 1"
eval(parse(text = e))
a
# [1] 1

e以下代码应该可以工作:

e <- "a <- 1"
eval(parse(text = e))
a
# [1] 1

e这样做似乎很奇怪,但我认为最好使用
assign
而不是创建“交互式”命令来解析

assign(Var_name,vectors[[Var_name]])
这样你就可以在你的名字上打圈,很容易地把东西拿出来。您只需要指定它是要分配给的全局环境

x <- data.frame(a=1:3,b=letters[1:3])
ls()
[1] "x"
invisible(sapply(names(x),function(y) assign(y,x[[y]],.GlobalEnv)))
ls()
[1] "a" "b" "x"
a
[1] 1 2 3
b
[1] a b c
Levels: a b c

x这样做似乎很奇怪,但我认为最好使用
assign
而不是创建“交互式”命令来解析

assign(Var_name,vectors[[Var_name]])
这样你就可以在你的名字上打圈,很容易地把东西拿出来。您只需要指定它是要分配给的全局环境

x <- data.frame(a=1:3,b=letters[1:3])
ls()
[1] "x"
invisible(sapply(names(x),function(y) assign(y,x[[y]],.GlobalEnv)))
ls()
[1] "a" "b" "x"
a
[1] 1 2 3
b
[1] a b c
Levels: a b c

x这样做似乎很奇怪,但我认为最好使用
assign
而不是创建“交互式”命令来解析

assign(Var_name,vectors[[Var_name]])
这样你就可以在你的名字上打圈,很容易地把东西拿出来。您只需要指定它是要分配给的全局环境

x <- data.frame(a=1:3,b=letters[1:3])
ls()
[1] "x"
invisible(sapply(names(x),function(y) assign(y,x[[y]],.GlobalEnv)))
ls()
[1] "a" "b" "x"
a
[1] 1 2 3
b
[1] a b c
Levels: a b c

x这样做似乎很奇怪,但我认为最好使用
assign
而不是创建“交互式”命令来解析

assign(Var_name,vectors[[Var_name]])
这样你就可以在你的名字上打圈,很容易地把东西拿出来。您只需要指定它是要分配给的全局环境

x <- data.frame(a=1:3,b=letters[1:3])
ls()
[1] "x"
invisible(sapply(names(x),function(y) assign(y,x[[y]],.GlobalEnv)))
ls()
[1] "a" "b" "x"
a
[1] 1 2 3
b
[1] a b c
Levels: a b c

x为什么需要这个?如果你用一个示例数据集和预期结果来解释你想要什么,这会更容易。你为什么要采用这种方法?使用
eval(parse(text=…)
?我确信你应该重新考虑你的方法“如果答案是parse(),你通常应该重新思考这个问题。”@CathG只是为了避免混淆:我的评论主要针对OP。你为什么需要这个?如果你用一个示例数据集和预期结果来解释你想要什么,这会更容易。你为什么要采用这种方法?使用
eval(parse(text=…)
?我确信你应该重新考虑你的方法“如果答案是parse(),你通常应该重新思考这个问题。”@CathG只是为了避免混淆:我的评论主要针对OP。你为什么需要这个?如果你用一个示例数据集和预期结果来解释你想要什么,这会更容易。你为什么要采用这种方法?使用
eval(parse(text=…)
?我确信你应该重新考虑你的方法“如果答案是parse(),你通常应该重新思考这个问题。”@CathG只是为了避免混淆:我的评论主要针对OP。你为什么需要这个?如果你用一个示例数据集和预期结果来解释你想要什么,这会更容易。你为什么要采用这种方法?使用
eval(parse(text=…)
?我确信你应该重新考虑你的方法“如果答案是parse(),你通常应该重新思考这个问题。”@CathG只是为了避免混淆:我的评论主要针对OP。