如何在R语言中将多行代码保存为可宏式调用的blockOfCode代码块
在R中创建可重复调用的代码块(类似宏)
嗨,这个需求在R里其实很好实现——我们可以把这段重复执行的代码包装成自定义函数,就能像你说的那样随时调用,完全替代重复写的代码块。下面是具体步骤:
1. 定义你的代码块函数
把你要重复执行的a<-some code;b<-some code;c<-some code放进一个无参数函数里。如果希望这些变量能在函数外部(全局环境)生效,记得用<<-代替<-赋值(默认函数内的变量是局部的,外部访问不到):
blockOfCode <- function() { a <<- some code # 用<<-把变量放到全局环境 b <<- some code c <<- some code }
如果你的代码块不需要给全局环境赋值,只是执行一些操作(比如绘图、导出文件),直接用<-就行,不用改。
2. 调用你的代码块
现在你就可以像"宏"一样调用这个函数了,把原来重复的代码段替换成函数调用即可:
# 改写前的代码 Z <- some code a <- some code b <- some code c <- some code Y <- some code a <- some code b <- some code c <- some code Z <- some code # 改写后的代码 Z <- some code blockOfCode() # 直接调用代码块 Y <- some code blockOfCode() # 再次调用 Z <- some code
小提醒
用<<-的时候要注意:如果全局环境里已经有同名变量,函数会直接覆盖它,所以最好确认你的变量名不会和现有变量冲突。如果不想污染全局环境,也可以让函数返回一个包含a、b、c的列表,之后再按需提取:
blockOfCode <- function() { a <- some code b <- some code c <- some code return(list(a = a, b = b, c = c)) } # 调用时提取变量 result <- blockOfCode() a <- result$a b <- result$b c <- result$c
内容的提问来源于stack exchange,提问作者Geoff
相关产品推荐
相关产品推荐

