可能是一个愚蠢的问题,但我已经寻找答案很久了,但没有找到:
我正在尝试编写一个文件阅读器,类似于
很遗憾,我无法解决这个问题:似乎无法将列表的成员向量推入push_back(),因为这会导致错误“Rcpp::Vector<19>::Proxy没有名为push_back()的成员”。
因此,我的问题是:是否有任何方法可以在Rcpp列表中附加到向量?或者我的唯一选择是逐列读取文件,将结果向量附加到“foo”,并咬住性能成本,这将导致必须迭代[列数]次而不是一次?
希望这个问题足够清楚。乐意回答任何问题。
我正在尝试编写一个文件阅读器,类似于
fread
或read.delim
,但是用C++实现,并通过Rcpp连接到R。最简单的方法是让它输出一个向量List
- 每个列一个 - 并将类设置为data.frame
。List foo;
foo.push_back(column);
foo.attr("class") = "data.frame";
return foo;
很简单,我以前做过。不幸的是:
- 我要读取的文件可以有不同数量的字段;
- 如果您按列读取文件,则此模型只能优雅地工作,而实际文件倾向于按行读取。
因此,答案是能够定义foo,然后对于每个读入的行,将一个字段推入foo的底层向量中的每个字段push_back():
List foo(1);
foo[0].push_back("turnip");
很遗憾,我无法解决这个问题:似乎无法将列表的成员向量推入push_back(),因为这会导致错误“Rcpp::Vector<19>::Proxy没有名为push_back()的成员”。
因此,我的问题是:是否有任何方法可以在Rcpp列表中附加到向量?或者我的唯一选择是逐列读取文件,将结果向量附加到“foo”,并咬住性能成本,这将导致必须迭代[列数]次而不是一次?
希望这个问题足够清楚。乐意回答任何问题。