使用Rccp将数据框中的列传递给函数

时间:2018-05-11 23:09:05

标签: r rcpp

这对很多人来说只是一个非常基础的知识,但这是我第一次使用Rccp包。我想使用Rccp将数据帧中的列传递给函数,我可以操作列中的数据。谢谢。

library(Rcpp)

df <- data.frame(Temp = c(25, 25, 85, 85, 125, 125, 125), Val =c(1.03, 1.06, 1.56,1.75,2, 1.85, 1.90), type=c(2,2,2,2,2,2,2))

arr<- df$Val

last <- length(arr)

cppFunction('int index(int arr[], int low, int high){

            int max = arr[low];

            int i;

            for (i = low; i <= high; i++)
            {
                if (arr[i] > max)
                max = arr[i];
            }
            return i;
}')

ind <- index(0,last-1,arr)

1 个答案:

答案 0 :(得分:3)

请查看,例如在

  • RcppExamples包中的DataFrame示例
  • SO网站上的其他几个问题
  • Rcpp画廊。

上述软件包中最简单的例子就是:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
List DataFrameExample(const DataFrame & DF) {

    // access each column by name
    IntegerVector a = DF["a"];
    CharacterVector b = DF["b"];
    DateVector c = DF["c"];

    // do something
    a[2] = 42;
    b[1] = "foo";
    c[0] = c[0] + 7; // move up a week

    // create a new data frame
    DataFrame NDF = DataFrame::create(Named("a")=a,
                                      Named("b")=b,
                                      Named("c")=c);

    // and return old and new in list
    return List::create(Named("origDataFrame") = DF,
                        Named("newDataFrame") = NDF);
}