考虑一个具有多个值的时间序列对象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)
如果我尝试将 …
假设我有一个如下所示的向量:
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函数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++中定义此函数的正确方法是什么?
谢谢.
如果我想连接两个矩阵A和B,我会做
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这样将意味着创建的副本A和B.是否可以定义X为Eigen::Ref<MatrixXd>替代?
谢谢.
我有以下矩阵:
[,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中有一个简单的方法吗?
谢谢
我正在使用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) 我需要定义一个函数,该函数采用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没有任何错误?
谢谢。
给定未排序的向量和相同类型的输入元素,找到向量中小于给定元素的最大元素的最有效方法是什么?这是我到目前为止:
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)
谢谢