小编use*_*195的帖子

R ts 对象 - 删除 NA 时保留索引

考虑一个具有多个值的时间序列对象NA

x <- seq(10)
x[seq(2,10,2)] <- NA
x <- ts(x)
Run Code Online (Sandbox Code Playgroud)

这是默认索引:

index(x)
[1]  1  2  3  4  5  6  7  8  9 10
Run Code Online (Sandbox Code Playgroud)

如果我NA使用 删除值na.exclude,我会得到一个新索引:

na.exclude(x)
[1] 1 3 5 7 9
attr(,"na.action")
[1]  2  4  6  8 10
attr(,"class")
[1] "exclude"    
index(na.exclude(x))
[1] 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

如果我尝试,na.omit我只会得到一个错误:

na.omit(x)
Error in na.omit.ts(x) : time series contains internal NAs
> index(na.omit(x))
Error in na.omit.ts(x) : time series contains internal NAs
Run Code Online (Sandbox Code Playgroud)

如果我尝试将 …

statistics r time-series

4
推荐指数
1
解决办法
3396
查看次数

从索引向量创建二元邻接矩阵

假设我有一个如下所示的向量:

x <- sample(5, 500, replace = TRUE)
Run Code Online (Sandbox Code Playgroud)

这样每个元素对应于从1到5的某个索引.

从这个向量创建二元邻接矩阵的有效方法是什么?详细说明,矩阵A应该是A[i,j] = 1if x[i] = x[j]和0否则.

r matrix adjacency-matrix

4
推荐指数
1
解决办法
346
查看次数

Rcpp - 定义一个带有R函数和省略号参数的C++函数

我有一个R函数bar,它接受另一个R函数foo,定义如下:

foo <- function(x,y) x + y
bar <- function(foo, z, ...) z + foo(...)
Run Code Online (Sandbox Code Playgroud)

呼叫bar将是以下形式:

bar(foo, 1,2,3)
Run Code Online (Sandbox Code Playgroud)

现在foo定义如上,我想创建一个C++版本bar.这是我尝试过的:

library(Rcpp)
cppFunction(
'
  double bar(Function foo, double z, ...) {
  return z + foo(...);
 }
 ')
Run Code Online (Sandbox Code Playgroud)

这显然不起作用.在C++中定义此函数的正确方法是什么?

谢谢.

c++ r ellipsis rcpp

3
推荐指数
1
解决办法
170
查看次数

Eigen :: Ref用于连接矩阵

如果我想连接两个矩阵AB,我会做

using Eigen::MatrixXd;
const MatrixXd A(n, p);
const MatrixXd B(n, q);
MatrixXd X(n, p+q);
X << A, B;
Run Code Online (Sandbox Code Playgroud)

现在,如果n,p,q是大的,定义X这样将意味着创建的副本AB.是否可以定义XEigen::Ref<MatrixXd>替代?

谢谢.

c++ eigen

3
推荐指数
1
解决办法
400
查看次数

R - 按重复值过滤矩阵

我有以下矩阵:

      [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    1    3    5    1
[2,]    3    5    4    6    7    2
Run Code Online (Sandbox Code Playgroud)

我需要过滤此矩阵,以便删除第1行中包含重复元素的列,只留下第2行中包含最大值的列.因此,在此示例中,需要删除输入矩阵的第1列和第6列:

      [,1] [,2] [,3] [,4]
[1,]    2    1    3    5
[2,]    5    4    6    7
Run Code Online (Sandbox Code Playgroud)

在R中有一个简单的方法吗?

谢谢

r matrix

2
推荐指数
1
解决办法
115
查看次数

C数组到Rcpp NumericVector

我正在使用C数组,因此需要Rcpp::NumericVector在代码中的某些时候将它们转换为。我尝试了以下代码,但引发了错误(无法从double [5]转换为'SEXP'类型)。从C数组转换为的正确方法是什么NumericVector

library(Rcpp)
cppFunction(
'
NumericVector fun() {
  double data[5] = {1.0, 2.0. 1.0, 2.0, 1.0};
  return as<NumericVector>(data);
}
')
Run Code Online (Sandbox Code Playgroud)

c arrays r rcpp

2
推荐指数
1
解决办法
752
查看次数

特征-将const数组映射到动态向量

我需要定义一个函数,该函数采用constC数组并将其映射到Eigen映射中。以下代码给我一个错误:

double data[10] = {0.0};
typedef Eigen::Map<Eigen::VectorXd> MapVec;

MapVec fun(const double* data) {
  MapVec vec(data, n);
  return vec;
}
Run Code Online (Sandbox Code Playgroud)

如果我const从函数定义中删除代码,则可以正常工作。但是是否可以保留且const没有任何错误?

谢谢。

c++ arrays eigen

2
推荐指数
1
解决办法
857
查看次数

C++ - 最有效的方法返回向量中的最大元素少于给定的输入

给定未排序的向量和相同类型的输入元素,找到向量中小于给定元素的最大元素的最有效方法是什么?这是我到目前为止:

std::vector<double> vec{1,2.2,3.5,4};
double elem = 3;

double lessThan(double elem, std::vector<double> vec) 
{
    std::vector<double> tmp = vec;
    tmp.push_back(elem);
    sort(tmp.begin(), tmp.end());
    return *(find(tmp.begin(), tmp.end(), elem) - 1);
}

lessThan(elem, vec); //returns 2.2
Run Code Online (Sandbox Code Playgroud)

谢谢

c++ stl vector

-2
推荐指数
1
解决办法
1134
查看次数

标签 统计

r ×5

c++ ×4

arrays ×2

eigen ×2

matrix ×2

rcpp ×2

adjacency-matrix ×1

c ×1

ellipsis ×1

statistics ×1

stl ×1

time-series ×1

vector ×1