通过从 C/C++ 替换 R 控制台中的输出来创建进度更新

2023-12-01

是否可以使用 R 的 C/C++ 打印函数覆盖 R 控制台输出?

Rcpp::sourceCpp( code = '
  #include <Rcpp.h>

  // [[Rcpp::export]]
  void print_test() {
    for(int i = 0; i < 10; i++) {
      std::stringstream strs;
      strs << "number: " << i;
      std::string temp_str = strs.str();
      char const* char_type = temp_str.c_str();      

      REprintf(char_type);
    }
  }'
)

print_test()

该函数的输出是

number: 0number: 1number: 2number: 3number: 4number: 5number: 6number: 7number: 8number: 9

但我希望它是一个动态序列。例如:

number: 0

等待几秒钟:

number: 1

where number: 0已从控制台中完全删除。重复此过程直到number: 9到达了。

我见过this问题,但我无法获得与 REprintf() 一起使用的回车解决方案。


为了获得正确的更新R控制台,您将需要使用Rinterfaces.h标头。该标头仅适用于类 UNIX 系统。因此,您的进度更新将break在 Windows 上。

特别是,您应该使用REprintf(标准错误)或Rprintf(标准输出)结合R_FlushConsole更新控制台。这里的关键是用环绕输出"\r"或回车,强制返回到行的开头。这将导致打印您的值,然后“删除”前一行。

在此过程中,检查用户中断可能是有利的(例如,如果用户按下退出键,则退出该过程)。因此,我添加了一个调用R_CheckUserInterrupt().

最后,为了强调正在发生更新,我选择slow通过强制它每秒左右睡眠一次来循环。

#include <Rcpp.h>

// for unix-alike machines only
#if !defined(WIN32) && !defined(__WIN32) && !defined(__WIN32__)
#include <unistd.h>
#include <Rinterface.h>
#endif

// [[Rcpp::export]]
void print_test() {
  int n = 10;

  for(int i = 0; i < n; i++) {

    #if !defined(WIN32) && !defined(__WIN32) && !defined(__WIN32__)
    // Sleep for a second
    usleep(1000000);
    #endif

    std::stringstream strs;
    strs << "number: " << i;
    std::string temp_str = strs.str();
    char const* char_type = temp_str.c_str();      

    REprintf("\r");
    REprintf("%s", char_type);
    REprintf("\r");
    #if !defined(WIN32) && !defined(__WIN32) && !defined(__WIN32__)
    R_FlushConsole();
    #endif
    R_CheckUserInterrupt();
  }

}

Example:

Progress Update

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过从 C/C++ 替换 R 控制台中的输出来创建进度更新 的相关文章

  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • 如何使用 SOAP 且不使用 WSE 在 .NET 中签署 Amazon Web 服务请求

    亚马逊产品广告 API 以前称为 Amazon Associates Web Service 或 Amazon AWS 实施了一项新规则 即自 2009 年 8 月 15 日起 向其发送的所有 Web 服务请求都必须经过签名 他们在其网站上
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 如何制作可启动程序?

    所以 这个问题可能看起来很奇怪 但假设我编译了 int main void int x 3 int y 4 int z x y 是否可以让CPU这样运行 如何 例如 这允许我写入监视器吗 如果我没记错的话 内存中有些地方可以写入要显示的内容
  • R ggplot:加权 CDF

    我想使用绘制加权 CDFggplot 一些旧的非 SO 讨论 例如this https stat ethz ch pipermail r help 2012 October 337288 html从 2012 年起 建议这是不可能的 但我想
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • 如何从 Rx Subscribe 回调异步函数?

    我想回调 Rx 订阅中的异步函数 例如 像那样 public class Consumer private readonly Service service new Service public ReplaySubject
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • 从 SpatialPolygons 和其他 sp 类中提取要素坐标

    Package sp为不同的空间概念 点 线 多边形 提供了许多类 对于某些类 访问要素坐标很简单 例如SpatialLines 所有示例均取自相应课程的帮助页面 l1 cbind c 1 2 3 c 3 2 2 l1a cbind l1
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 如何在 winforms 应用程序的主屏幕显示之前显示欢迎屏幕?

    我想在应用程序启动时加载欢迎屏幕 然后用户单击欢迎屏幕上的按钮 然后关闭欢迎屏幕 最后显示主屏幕 static void Main startup method being called Application EnableVisualSt
  • 通过 Tab 键浏览 XML 文档字段

    In VB NET you can move through the fields in the XML member documentation with the Tab key 这在 C 中不起作用 还有其他方法吗 除了用鼠标将光标放在
  • 为什么以下 C 程序会出现总线错误?

    我认为这是第一个失败的 strtok 调用 好久没写C了 有点不知所措 非常感谢 include
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo

随机推荐

  • 当对 XML 中的节点值求和时,SQL Server 出现奇怪的行为

    我问一个关于求和节点值的问题 对 sql server 2008 中的一些 xml 节点值求和 请考虑这段代码 Declare xml xml set xml
  • window.history.back() 显示“文档已过期”页面,有什么办法吗?

    客户要求用户能够在单击结果后返回到充满搜索结果的页面 现在这是一个简单的 jQuery 调用 a detail back button on click function evt evt preventDefault window hist
  • 使用 javascript 填充角度输入

    设置元素的value不管用 它的行为不像用户输入 当我提交此输入时 弹出窗口告诉我我根本没有填写输入 如何像用户一样填充这个输入元素 div class login input input group div
  • 通用 Windows 平台上的递归 XAML 绑定数据模板

    所以我有一个任务类 它有几个属性 并且里面还可以有一个任务对象列表 子任务 我想在 UWP 上递归显示每个任务及其子任务 根据这篇文章 显然 WPF 为此目的有特殊的 UserControls 递归数据模板可能吗 但它们似乎在 UWP 上不
  • 如何在 Chart.js 中指定刻度位置?

    我正在寻找一种方法来手动指定 x y 刻度位置chart js图表 相当于 matplotlib 的matplotlib pyplot xticks 该文档解释了如何创建自定义刻度格式 但这适用于自动计算的刻度位置 如何指定刻度位置 这是我
  • 计算 nd 数组中相同子数组的最快方法?

    让我们考虑一个二维数组A 2 3 5 7 2 3 5 7 1 7 1 4 5 8 6 0 2 3 5 7 第一行 第二行和最后一行是相同的 我正在寻找的算法应该返回每个不同行的相同行数 每个元素的重复项数 如果可以轻松修改脚本以也计算相同列
  • 从 QTableWidget 读取选定的项目

    如何从 QTableWidget 读取选定的项目 Thanks int QTableWidget currentRow const返回当前项目的行 int QTableWidget currentColumn const返回当前项目的列
  • 静态方法和实例方法同名吗?

    我有一个在 C 中同时具有静态和非静态接口的类 类中是否可以有具有相同名称和签名的静态方法和非静态方法 当我尝试这样做时 出现编译器错误 但出于某种原因 我认为有一种方法可以做到这一点 我错了还是没有办法在同一个类中同时拥有静态和非静态方法
  • 如何循环遍历不同目录下的文件

    我想循环多个文件并对它们应用一个函数 问题是这些文件都位于不同但名称相似的目录中 途径模式相似 但数量根据其所属的家族而变化 例如 我的代码是这样写的 for i in 1 numfiles olddata lt read table pa
  • 为什么 save() 不自动调用 save_m2m()?

    我明白如果我做类似的事情object save commit False 我的 M2M 关系不会自动保存 但如果我稍后打电话object save 我也被迫打电话self save m2m 既然我打电话save 我不明白为什么我需要手动调用
  • 使用 fuzzywuzzy 在数据框中创建新列

    我有一个数据框pandas我在哪里使用fuzzywuzzy将数据框中的第一列与第二列相匹配 我定义了一个函数来创建具有第一列 第二列和部分比率分数的输出 但它不起作用 能否请你帮忙 import csv import sys import
  • 创建 CUDA 上下文的差异

    我有一个使用三个内核的程序 为了获得加速 我做了一个虚拟内存复制来创建一个上下文 如下所示 global void warmStart int f f 0 它是在内核之前启动的 我想按如下方式计时 int dFlag NULL cudaMa
  • 如何在div标签中动态加载aspx页面?

    大家好 我正在尝试将一个aspx页面的内容加载到另一个aspx页面的div标签中 我不想使用jquery 任何人都可以建议我服务器端解决方案 以便在单击按钮时动态加载 div 标签 提前致谢 只需获取页面本身并将其发送到控件 in HTML
  • 在linux下构建edk2

    我开始用 edk2 编写一个小而简单的应用程序 因此 要编写一个简单的 edk2 UEFI 应用程序 我是这样开始的 git克隆https github com tianocore edk2 git edksetup sh BaseTool
  • Asp.net 跨域表单发布

    是否可以将数据从一个域中的 ASP NET 应用程序发布到不同域中的另一个应用程序 我看过一些帖子 其中人们提到了一些相当奇怪的方法将表单注入到响应流中 但这似乎有点矫枉过正 是否有可能 以及在不破坏 Asp net 的情况下实现这一目标的
  • 如何使用 powershell 将 vhd 复制到基于 RM 的订阅?

    我正在寻找 Powershell 脚本来使用资源管理器部署模型将 vhd 复制到订阅 vhd 存储在 Azure 存储页 blob 中 存储 API 的工作方式独立于帐户的创建方式 经典与 ARM 它甚至独立于订阅 您只需要存储帐户的名称和
  • 复选框仅适用于 jQuery 数据表中的当前分页页面

    我正在使用 jquery 数据表列出我的内容 其中具有复选框选择和选定的内容发布数据 但在提交的表单中仅发送当前页面数据 我的数据表代码是 select dataTable order 2 desc lengthMenu 50 1 50 A
  • 更改检查映射键是否相等的方式

    我有以下代码 class KeyClass int property KeyClass this property void main KeyClass kc1 KeyClass 1 KeyClass kc2 KeyClass 2 Map
  • 字节顺序——为什么字符要向后放入 Int16 打印?

    以下 C 代码在 XCode 中编译并运行 UInt16 chars ab printf nchars 2 2s char chars 打印 ba 而不是 ab Why 该特定实现似乎以小端格式存储多字符常量 在常数 ab 人物 b 是最低
  • 通过从 C/C++ 替换 R 控制台中的输出来创建进度更新

    是否可以使用 R 的 C C 打印函数覆盖 R 控制台输出 Rcpp sourceCpp code include