R 打印参数';s值,包括其类型

R 打印参数';s值,包括其类型,r,printing,R,Printing,我有一个变量,我们称它为朝鲜蓟,它可以是序列,也可以是向量 artichoke如果我们想延迟执行,可以用quote artichoke <- quote(seq(-5, 5)) 另一个选项是创建一个函数,使用match.call(),print提取参数,同时返回计算表达式,并将其分配给对象 f1 <- function(expr) { print(as.list(match.call()[-1])$expr) expr } artichoke <- f1(se

我有一个变量,我们称它为朝鲜蓟,它可以是序列,也可以是向量


artichoke如果我们想延迟执行,可以用
quote

artichoke <-  quote(seq(-5, 5))

另一个选项是创建一个函数,使用
match.call()
print
提取参数,同时
返回
计算表达式,并将其分配给对象

f1 <- function(expr) {
 print(as.list(match.call()[-1])$expr)
  expr
  }

artichoke <- f1(seq(-5, 5))
#seq(-5, 5)

artichoke <- f1(c(-5, 5))
#c(-5, 5)

如果我们想延迟执行,可以用
quote

artichoke <-  quote(seq(-5, 5))

另一个选项是创建一个函数,使用
match.call()
print
提取参数,同时
返回
计算表达式,并将其分配给对象

f1 <- function(expr) {
 print(as.list(match.call()[-1])$expr)
  expr
  }

artichoke <- f1(seq(-5, 5))
#seq(-5, 5)

artichoke <- f1(c(-5, 5))
#c(-5, 5)

在R中有一个名为
dput()
的函数,它比我认为的更聪明


artichoke在R中有一个名为
dput()
的函数,它比我认为的更聪明


朝鲜蓟这种方法有效,但还有其他方法吗?我必须将代码中提到的所有朝鲜蓟都改为eval(朝鲜蓟),这有点麻烦。@Joãoduart更新后的解决方案会有帮助吗?两者都能给出正确的结果。我只是希望我不必在代码的其余部分更改所有的朝鲜蓟依赖项,我将不得不使用这两种解决方案中的任何一种。从来没有想过我会写“洋蓟依赖性”这个词。我很高兴我选择了这个变量名。这是可行的,但还有其他方法吗?我必须将代码中提到的所有朝鲜蓟都改为eval(朝鲜蓟),这有点麻烦。@Joãoduart更新后的解决方案会有帮助吗?两者都能给出正确的结果。我只是希望我不必在代码的其余部分更改所有的朝鲜蓟依赖项,我将不得不使用这两种解决方案中的任何一种。从来没有想过我会写“洋蓟依赖性”这个词。我很高兴我选择了这个变量名。你能稍微具体一点/在你的问题中提供多一点上下文吗?一旦任务完成(即,一旦<代码>朝鲜蓟此变量在脚本下游使用以运行某些函数。我想保存每个脚本运行的参数,以便能够打印完整的函数信息,以便我可以使用该信息创建一张表。是否清楚?您能稍微具体一点/在您的问题中提供多一点上下文吗?一次任务完成了(即,一旦<代码>朝鲜蓟此变量在脚本下游使用以运行某些函数。我想保存每个脚本运行的参数,以便能够打印完整的函数信息,以便我可以使用该信息创建一张表。是否清楚?这正是我要查找的,但在每次运行dput逗号时都会出现一个小问题。)nd,
dput(朝鲜蓟,file=textConnection(“art1”,“w”)))
如果您随后将原始变量更改为一个新值,并再次运行dput,则会收到错误消息
textConnection(“art1”,“w”):无法更改“art1”的锁定绑定值。
我所做的只是添加了一个“rm”(art1)'在脚本的末尾,为了确保它重置,只想将其放在这里供将来参考,您可能还可以通过显式打开textConnection并将其分配给一个单独的变量,然后显式关闭并重新打开它…(使用
open()
/
close()
)这正是我要寻找的,但有一个小问题,每当我运行dput命令时,
dput(朝鲜蓟,file=textConnection(“art1”,“w”))
如果您随后将原始变量更改为一个新值,并再次运行dput,就会收到错误消息
textConnection(“art1”,“w”)中的错误:无法更改“art1”的锁定绑定值。
我所做的只是添加一个“rm(art1)”'在脚本的末尾,为了确保它重置,只想将其放在这里供将来参考,您可能还可以通过显式打开textConnection并将其分配给一个单独的变量,然后显式关闭并重新打开它…(使用
open()
/
close()