在 RCpp 中将 DataFrame 转换为 Matrix 的最佳方法

2023-11-21

我有一个 RCpp 代码,在代码的一部分中我试图将 DataFrame 转换为 Matrix。 DataFrame 仅包含数字(没有字符串或日期)。

以下代码有效:

//[[Rcpp::export]]
NumericMatrix testDFtoNM1(DataFrame x) {
  int nRows=x.nrows();  
  NumericMatrix y(nRows,x.size());
  for (int i=0; i<x.size();i++) {
    y(_,i)=NumericVector(x[i]);
  }  
  return y;
}

我想知道是否有替代方法(即相当于as.matrix在 R 中)在 RCpp 中执行相同的操作,类似于下面的代码(不起作用):

//[[Rcpp::export]]
NumericMatrix testDFtoNM(DataFrame x) {
  NumericMatrix y(x);  
  return y;
}

* EDIT *

感谢您的回答。正如 Dirk 所建议的,C++ 代码比这两个答案中的任何一个快大约 24 倍Function版本比之前版本快 2%internal::convert_using_rfunction版本。

我最初是在 RCpp 中寻找答案而不打电话给 R。当我发布我的问题时应该明确这一点。


与 Gabor 的版本类似,您可以执行以下操作:

#include <Rcpp.h>
using namespace Rcpp ;

//[[Rcpp::export]]
NumericMatrix testDFtoNM(DataFrame x) {
  NumericMatrix y = internal::convert_using_rfunction(x, "as.matrix");  
  return y;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 RCpp 中将 DataFrame 转换为 Matrix 的最佳方法 的相关文章

随机推荐

  • Laravel 批量更新

    我正在尝试更新包含每个记录的随机段值的表 vouchers Voucher gt get assume 10K for example foreach vouchers as voucher q UPDATE vouchers set sl
  • 如何使用 pyspark 将字段从 double 转换为 float 并对其进行舍入

    我有两个数据框 其架构如下 books with 10 ratings or more with title root ISBN string nullable true count long nullable false average
  • iCloud:我可以忽略那些禁用 iCloud 的人吗?

    我对 iCloud 的想法有点挣扎 并发布了一个更普遍的问题here 我最大的问题是决定是否应该停止将用户数据放入应用程序沙箱中的旧文档文件夹中 为了说明我的问题 The docs据我所知 不要给出答案 假设我有一个处理不同 txt 文件的
  • 变量值是否改变

    如何在 javascript 中查找变量的值是否更改 Ehm var testVariable 10 var oldVar testVariable if oldVar testVariable alert testVariable has
  • 如何将 CSV 文件导入 Firebase

    我看到我们可以将 json 文件导入到 firebase 中 我想知道是否有办法导入 CSV 文件 我的文件可能包含大约 50K 甚至更多记录 大约 10 列 在 firebase 中拥有这样的文件是否有意义 我无法回答在 Firebase
  • python-ldap OS X 10.6 和 Python 2.6

    尝试为我的 Django 项目安装 python ldap 到目前为止尝试过 easy install pip 以及自己构建 但仍然遇到相同的错误 dlopen Library Python 2 6 site packages ldap s
  • 让 Gii 在 Yii 2.0 上工作

    我下载了高级模板 将其解压并更改了后端和前端的根文档 但我似乎不知道如何让 Gii 执行增删改查操作 Composer JSON 中有 require 和 require dev 字段 我在它们两个中都包含了 gii 并且分别在每个字段中包
  • 始终允许本机数据库查询

    在 Excel 2013 中 如何更改选项 或者是否可能 以始终允许本机数据库查询 有人可以指导我如何设置吗 我还没有足够高的声誉来对 user2676140 的答案发表评论 但为了防止有人来到这个线程寻求 Excel 我可以利用它2016
  • 如何在C中将数组拆分为两个数组

    假设我有一个 C 数组 int array 6 1 2 3 4 5 6 我怎么能把它分成 1 2 3 and 4 5 6 使用 memcpy 可以吗 谢谢你 nonono 当然 最简单的解决方案是使用分配两个新数组malloc然后使用mem
  • JUnit TestCase 对象实例化

    是一个新的 或不同的 实例TestCase对象用于运行 JUnit 测试用例中的每个测试方法 或者所有测试都重复使用一个实例 public class MyTest extends TestCase public void testSome
  • 为什么 Eclipse 3.2 在启动时抛出错误

    我有一台 Windows 32 位计算机 刚刚下载了 Eclipse 3 2 SDK 但无法启动 它立即将以下错误抛出到日志文件中 我尝试用 java 1 5 VM 启动它 但仍然没有任何运气 有任何想法吗 谢谢 SESSION 2012
  • 使用 SSHTunnelForwarder 通过 SSH 连接到 MySQL 数据库

    我正在尝试在 python 中通过 ssh 连接到 mysql 数据库 但出现错误 我将以下内容保存在 python 文件 forward py 中 我的代码如下 转发 py from sshtunnel import SSHTunnelF
  • android:创建滚动时折叠的布局

    I need a layout view1 which on scrolling listview gets collapsed so that listview have full screen height 根据您的要求使用折叠工具栏布
  • 解决 bash 脚本中的 sys.excepthook 错误

    我编写了一个 bash 脚本 它完全按照我想要的方式执行 但排除了以下错误 close failed in file object destructor sys excepthook is missing lost sys stderr 我
  • 是否可以使用 javaagent 运行 Play Framework 2.0 服务器?

    我希望能够使用 javaagent 运行 Play Framework 2 0 服务器 网络上的一些资源 参见here and here 建议这可以简单地通过附加来完成 javaagent path to agent jar to play
  • 为什么删除迁移运行我的应用程序?

    我在过去几个月进行了一些版本升级 现在我注意到当我使用 remove migration 删除我恢复的迁移时 它首先运行我的应用程序 我注意到 因为我们在启动内更新数据库 所以我遇到了无法删除迁移的情况 因为每次我尝试删除迁移时 它都会自动
  • AsParallel 究竟是如何工作的?

    对于下面的测试程序来说 它似乎并没有做深蹲 这是因为我正在用一个小列表进行测试吗 static void Main string args List
  • 防止 InnoDB 在重复键上自动递增

    我目前遇到主键问题ID其设置为auto increment 一直在增加ON DUPLICATE KEY 例如 ID field1 field2 1 user value 5 secondUser value 86 thirdUser val
  • 确定字符串具有所有唯一字符,无需使用额外的数据结构且无需小写字符假设

    这是问题中的问题之一破解编码面试 book作者 盖尔 拉克曼 麦克道威尔 实现一个算法来确定字符串是否包含所有唯一字符 如果不能使用额外的数据结构怎么办 作者写道 我们可以通过使用位向量来减少一点空间使用 在下面的代码中 我们假设字符串只是
  • 在 RCpp 中将 DataFrame 转换为 Matrix 的最佳方法

    我有一个 RCpp 代码 在代码的一部分中我试图将 DataFrame 转换为 Matrix DataFrame 仅包含数字 没有字符串或日期 以下代码有效 Rcpp export NumericMatrix testDFtoNM1 Dat