3

[我在别处草拟了这个作为评论,但决定提出一个适当的问题......]

在 Rcpp 中使用数据帧时,就代码结构而言,目前认为什么是“最佳实践”?人们可以轻松地将输入数据帧从 R 传送到 C++ 代码,但如果数据帧有 n 列,则当前认为应该将这些数据拆分为 n 个单独的 (C++) 向量在被使用之前?

对我之前关于在数据框中使用字符串(字符向量)列的问题的回答向我表明,是的,这是正确的做法。特别是,似乎不支持诸如 df.name[i] 之类的符号直接引用数据帧信息(就像在 C 结构中可能具有的那样),除非我弄错了。

然而,这导致我们陷入一种情况,即对数据进行子集化要麻烦得多——不能在一行中对数据框进行子集化,而是必须单独处理每个变量。那么,是否认为 Rcpp 中的子集化最好通过布尔向量隐式完成?

总而言之,我想简而言之,我想检查一下我目前的理解,尽管数据框可以传送到 C++ 代码,但无法直接引用“df.name [ i]" 时尚,并且没有简单的方法通过选择满足简单标准的行来生成输入 df 的子数据帧(例如 df.date 在给定范围内)。

4

1 回答 1

8

因为数据帧实际上在内部表示为向量列表,所以通过向量访问确实是您能做的最好的事情。根本没有办法在 C 或 C++ 级别逐行进行子集化。

几周前,在 r-devel 上,在 data.frame 转置的背景下对此进行了很好的讨论(出于同样的原因,您不能“便宜”地做到这一点)。

于 2012-06-06T11:21:46.233 回答