R 语言数值实验中常见技巧整理

简介: R 语言数值实验中常见技巧整理

简介

最近在进行新文章的数值模拟阶段。上一次已经跟读者们分享了模拟实验的大致流程,见:数值模拟流程记录和分享

本文汇总小编在模拟实验中的常用技巧。目录如下:

  • 1. 隐藏输出结果
  • 2. 自动创建文件夹
  • 3. 保存多个数据到 Excel 中
  • 4. 运行完程序提醒
  • 5. 计算运行时间
  • 6. 运行时进度条显示

1. 隐藏输出结果

在拟合数据时,如果使用第三方包拟合,可能会出现以下情景:

如果想删除自动输出的内容,可以使用以下代码

sink("NUL")
  fit <- fit(obj, data, stepsEM = 300, every = 100)     
  sink()

此时,将不会自动输出其他结果。该方法参考于stackoverflow[1],上面代码适用于 mac,windows 读者自测噢~

2. 自动创建文件夹

有时候,读者需要保存实验结果并将其放到子文件夹中,可以通过以下代码,自动创建 result3 文件夹。然后再配合 write.xlsx()save.image() 来存储数据和工作空间 (见下一个知识点)。

folder_path <- paste("result3/",lambda,'-',m,sep='') #路径设置
if (!file.exists(folder_path)) { dir.create(folder_path,recursive = TRUE) } else { cat("Folder already exists:", folder_path, "\n")}

3. 保存多个数据到 Excel 中

使用 openxlsx[2] 包,将需要保存的变量 RB, RMSE, LEN, COV 存放到列表中。并通过 write.xlsx() 进行保存:

library(openxlsx)
sheets = list('RB'= RB, 'RMSE' = RMSE, 'LEN' = LEN, 'COV' = COV)
write.xlsx(sheets,paste(folder_path,"/n",n,".xlsx",sep=''),colNames = TRUE,rowNames = TRUE)

此时得到的结果:

技巧:使用 paste() 函数,自动根据参数不同(n),改变路径和文件名称(文件夹要提前建立好,结合上一个知识点)。

4. 运行完程序提醒

使用 beepr[3] 包中的 beep(),在代码末尾加入,即可在程序结束后发出声音从而提醒读者程序已运行完。详细教程见小编以前写的推文:程序结束后记得提醒我

beepr::beep(sound = "mario")

5. 计算运行时间

有时候需要计算每次循环的运行时间,可以使用以下代码:

start_time <- Sys.time() # 记录初始时间
myfunction() # 运行你的代码
end_time <- Sys.time() # 记录终止时间

还有其他更高级的用法,详细见小编以前写的推文:计算代码运行时间的 5 种方法

6. 运行时进度条显示

为了展示循环次数和循环进度,可以在循环中添加 print(i)

for(i in 1:10){
  print(i)
  # my_funtions #其他内容
}

当循环次数太多时,可以使用 if(i %% 10 == 0) print(i),此时得到:

另一种方式是,创建一个进度条(个人使用比较多),它将根据循环总次数,动态的展示百分比(见下面的 GIF)

# 创建一个进度条
pb <- txtProgressBar(min = 0, max = 100, style = 3) # 指定最小值、最大值和样式
# 模拟一个循环,更新进度条
for (i in 1:100) {
  Sys.sleep(0.1)  # 模拟耗时操作
  setTxtProgressBar(pb, i)  # 更新进度条
}
close(pb)  # 关闭进度条

小编有话说

本文主要介绍模拟实验中常用到的技巧,个人觉得非常实用。下一期将汇总 模拟实验中的绘图技巧

参考资料

[1]

stackoverflow: https://stackoverflow.com/questions/2501895/how-to-suppress-output

[2]

openxlsx: https://cran.r-project.org/web/packages/openxlsx/index.html

[3]

beepr: https://www.r-project.org/nosvn/pandoc/beepr.html

目录
相关文章
|
机器学习/深度学习 Windows
解决R语言出现“二进列运算符中有非数值参数”的错误!
解决R语言出现“二进列运算符中有非数值参数”的错误!
2294 0
解决R语言出现“二进列运算符中有非数值参数”的错误!
|
6月前
R语言进行数值模拟:模拟泊松回归模型的数据
R语言进行数值模拟:模拟泊松回归模型的数据
R语言进行数值模拟:模拟泊松回归模型的数据
|
6月前
|
数据可视化 Python
R语言蒙特卡罗Monte Carlo方法进行数值积分和模拟可视化
R语言蒙特卡罗Monte Carlo方法进行数值积分和模拟可视化
|
6月前
R语言因子实验设计nlme拟合非线性混合模型分析有机农业施氮水平
R语言因子实验设计nlme拟合非线性混合模型分析有机农业施氮水平
|
数据挖掘 Serverless
R语言之数值型描述分析
R语言之数值型描述分析
87 0
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
22天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为