下面是一些后台信息:我在R中创建了一个问答函数。用户调用该函数后,系统会提示他们一系列问题,这些问题最终将用于使用R markdown填充报告。该函数被划分为预期报告后面的部分,每个部分都以一个data.frame结束,其中包含问题类别、答案和变量名称。总共有17个部分,这意味着在函数将最终数据帧写入.csv、保存到目录并退出之前,有17个数据帧使用rbind函数串在一起。这个功能运行得很好,我对它没有任何问题。
我的问题在于,一旦函数结束,我就无法将变量回调到控制台。这是一个问题,因为如果我想用R markdown中的问题填充报告,我就不能,因为它们只存在于函数的领域中。
我已经尝试过了:
- 我已经尝试创建一个列表(使用c()),其中包含每个部分的变量,并让函数返回列表。然而,这并没有起到作用,因为它不仅返回了列表的一小部分,而且只填充了我传递给变量的读行。我需要能够调用变量并接收所回答的内容
- 我已经调用了函数保存的.csv,并试图使用assign函数将变量名分配给变量答案。只有当我一次输入一行时,这才有效,当我试图将第1列分配给第2列时,这就失败了。考虑到有163个问题,一次分配一个问题是浪费时间。我甚至尝试过使用lapply和sapply函数来实现这一点,但assign函数总是失败
我需要能够调出在函数执行过程中创建的163个变量。以下是一个有兴趣与之一起玩的函数示例。
sv<-function(){
Name<-readline("What is your Name?")
Date<-readline("What date is the site audit set for?(mm/dd/yyyy)")
Number<-readline("What is the project number")
Bname<-readline("What is the buildings name?")
ADD<-readline("What is the buildings address?(123 Fake Street)")
City<-readline("What city is the bulding located in?")
Pcode<-readline("What is the buildings postal code?")
HOO<-readline("What are the building's hours of operation?")
PHONE<-readline("What is the building's telephone number? (555-555-5555)")
FAX<-readline("What is the Fire Department's fax number? (555-555-5555)")
CONTACT<-readline("Who is the contact person for the Building? (First name, Last name)")
}
我事先感谢你的帮助。此外,请注意,我已经在网站上搜索过,看到了类似的问题,但未能使建议发挥作用,因此,如果这是多余的,我深表歉意。记住,一旦函数完成了它的工作,我需要能够调用Name并接收我输入的名称。
使用全局赋值运算符:
> sv <- function(){
+ Name <<- readline("What is your Name?")
+ }
> sv()
What is your Name?mkemp6
> print(Name)
[1] "mkemp6"