小编Dir*_*tel的帖子

将布尔R向量传递给C dynamic_bitset

将布尔R矢量传递给C++ dynamic_bitset向量的最佳方法是什么?有没有办法使用指针和向量长度来构造一个dynamic_bitset对象,就像矢量类一样?你会推荐使用Rcpp吗?
谢谢你的帮助和时间......

c++ r rcpp

5
推荐指数
1
解决办法
285
查看次数

getResources(R.string.hello_world)和R.string.hello_world之间的区别

使用区别的是:

getResources().getText(R.string.hello_world)
Run Code Online (Sandbox Code Playgroud)

和:

R.string.hello_world
Run Code Online (Sandbox Code Playgroud)

第二种方式,应该返回一个int对象.我刚尝试过:

Toast.makeText(getApplicationContext(), getResources().getText(R.string.hello_world), Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

和:

Toast.makeText(getApplicationContext(), R.string.hello_world, Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

似乎在两个方面都有效.

感谢帮助!

resources android

5
推荐指数
1
解决办法
812
查看次数

使用X11窗口的R脚本仅打开一秒钟

我正在通过Linux Mint 16命令行运行R脚本.它包含一个我想在窗口中显示的箱线图.所以我正在使用x11()函数来创建该窗口.这是我的代码:

testdata <- data.frame(sample(1:1000,size=100,replace=T), row.names=NULL)
colnames(testdata)<-c("data")

x11()
boxplot(testdata, main="Boxplot der Testdaten", horizontal=TRUE)
Run Code Online (Sandbox Code Playgroud)

当我在Rstudio中运行此函数时,它将打开一个窗口并显示创建的boxplot.但每当我从Linux Mint 16机器的命令行运行它时,窗口将打开一秒钟然后再次关闭.我可以看到箱形图一秒钟.我真的找不到理由.我对R很新,从未使用过X11.任何想法都会非常感激.谢谢!

x11 r

5
推荐指数
1
解决办法
1384
查看次数

R-数据表滚动窗口-自定义功能

如果我使用的值是前 30 个值的异常值,我需要计算 ts。我正在处理的数据的维度为 600 列 x 200000 行。所以我想利用数据表速度的好处。

我的功能是:

es_outlier<-function(vect){
  qq =quantile(vect, prob=c(0.25,0.75), na.rm=T)
  q3=qq[2]
  IC=q3-qq[1]
  limSup=q3+IC*1.5
  vector_final=abs(vect)>limSup
  return(vector_final[length(vect)] )
}
Run Code Online (Sandbox Code Playgroud)

一个示例表是:

library(data.table)

dt<-data.table(x1=runif(50000), x2=runif(50000))
dt$x1[555]<-2000
dt$x2[556]<-2000
Run Code Online (Sandbox Code Playgroud)

我可以用 zoo 包解决这个问题:

zoo::rollapply(dt,30,es_outlier, fill=NA,align='right')
Run Code Online (Sandbox Code Playgroud)

但这需要很多时间,而且比我的真实数据要少。

我想要类似的东西:

dt[, (nom):=lapply(.SD,function, n=30)]
Run Code Online (Sandbox Code Playgroud)

我尝试使用 Rcpp,但它没有分位数功能。

有没有更快的方法来应用我的功能?

PS:对于一个小表,函数返回:

x<-data.frame(x1=1:8, x2=c(1:7,2000))
x_dt<-data.table(x)
zoo::rollapply(x_dt,5,es_outlier, fill=NA,align='right')

 x1    x2
 NA    NA
 NA    NA
 NA    NA
 NA    NA
 FALSE FALSE
 FALSE FALSE
 FALSE FALSE
 FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

r apply zoo

5
推荐指数
1
解决办法
718
查看次数

Fortran子程序不适用于R包

我的一个旧项目已经开始显示一个新的行为,一个已经可供R包使用的fortran子程序不再可用.该包在src/目录中包含C++和Fortran代码.显然C++方法可用,但Fortran子程序不可用.

您可以在我的github 页面上查看代码库 .

重现错误所需的细节如下

# Install the specific version of the sccm package (including dependencies)
devtools::install_github("dewittpe/sccm@72375b2f347667119215eab708ebdfdec78fdfb2")
Run Code Online (Sandbox Code Playgroud)

我们从sccm包和示例数据集加载共享对象.dyn.load(list.files(system.file("libs",package ="sccm"),full.names = TRUE))

# Example data set
data("HexagonalFish", package = "sccm")
hf_pg <- sccm::polygon(HexagonalFish[, c("x", "y")])
Run Code Online (Sandbox Code Playgroud)

为了帮助说明这个问题,有一种C++方法可以确定一个点是否在多边形的内部.符号名称是_sccm_is_in_cpp和,如此处所示,已加载

is.loaded("_sccm_is_in_cpp")
# [1] TRUE

.Call("_sccm_is_in_cpp", PACKAGE = "sccm", 0.2, 0.4, hf_pg$vertices) # expect 0
## [1] 0
.Call("_sccm_is_in_cpp", PACKAGE = "sccm", 156, 178, hf_pg$vertices) # expect 1
## [1] 1
Run Code Online (Sandbox Code Playgroud)

导致错误的Fortran子程序之一是:scmap_.但是,符号已加载.

is.loaded("scmap_")
## [1] TRUE

# need values …
Run Code Online (Sandbox Code Playgroud)

fortran r r-package

5
推荐指数
1
解决办法
207
查看次数

有效地计数列表的出现

我有一个包含数百万个列表的列表,这些子列表具有一些不同的可能值,可能是10到100。

我想计算这些值的出现次数。

下面的代码可以工作,但是非常慢。我们可以做得更快吗?

count_by_list <- function(lst, var_nm = as.character(substitute(lst)), count_nm = "n"){
  unique_lst <- unique(lst)
  res <- tibble::tibble(!!var_nm := unique_lst, !!count_nm := NA)
  for(i in seq_along(unique_lst)){
    res[[count_nm]][[i]] <- sum(lst %in% res[[var_nm]][i])
  }
  res
}

x <- list(
  list(a=1, b=2),
  list(a=1, b=2),
  list(b=3),
  list(b=3, c=4))

count_by_list(x)
#> # A tibble: 3 x 2
#>   x                    n
#>   <list>           <int>
#> 1 <named list [2]>     2
#> 2 <named list [1]>     1
#> 3 <named list [2]>     1
Run Code Online (Sandbox Code Playgroud)

reprex软件包(v0.3.0)创建于2019-11-29

我尝试使用库进行哈希处理, …

parallel-processing performance r count

5
推荐指数
2
解决办法
126
查看次数

R中有没有HTTP库?

我需要使用R来制作HTTP POST命令.是否有任何R http库可以执行此操作?

r

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

在R中创建具有相同值的块矩阵

我想在*n矩阵中创建具有相同值的k个块(k可以精确地按行号乘以列号乘以n*n):

例如,当n = 4且k = 4时,(k可以精确地除以4*4 = 16),矩阵就像这样创建:

1 1 2 2
1 1 2 2
3 3 4 4
3 3 4 4
Run Code Online (Sandbox Code Playgroud)

如果没有for循环,我怎么能这样做?

r matrix

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

致命错误:RcppEigen.h:没有这样的文件或目录

我很陌生RcppRcppEigen可能这就是为什么我自己无法弄清楚的原因:

我只想编写一个包含 Eigen 库的 C++ 函数。为了测试它是否有效,我从http://people.math.aau.dk/~sorenh/misc/Rdocs/Rcpp/RcppSHLIB.pdf 中获取了以下示例:

#include <Rcpp.h>
#include <RcppEigen.h>
RcppExport SEXP C_spdinv_eigen ( SEXP X_ ){
using Eigen::Map;
using Eigen::MatrixXd;
typedef Eigen::Map<Eigen::MatrixXd> MapMatd;
const MapMatd X(Rcpp::as<MapMatd>(X_));
const MatrixXd Xinv(X.inverse());
return(Rcpp::wrap(Xinv));
}
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

rcpp-test.cpp:2:23: fatal error: RcppEigen.h: No such file or directory
compilation terminated.
make: *** [rcpp-test.o] Error 1
g++ -I/usr/share/R/include -DNDEBUG    -I"/usr/local/lib/R/site-library/Rcpp/include"    -fpic  -O3 -pipe  -g  -c rcpp-test.cpp -o rcpp-test.o 
Error in Rcpp::sourceCpp("rcpp-test.cpp") : 
  Error 1 occurred building shared library.
Run Code Online (Sandbox Code Playgroud)

编译一个只有 的脚本 …

r rcpp

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

将SEXP从R转换为C++中的字符串向量

我试图将字符向量(即字符串向量)从R传递到C/C++以进行排序和其他目的.使用Rcpp时,可以使用以下代码轻松完成:

#include <Rcpp.h>
#include <vector>
#include <string>
using namespace Rcpp;

// [[Rcpp::export]]
CharacterVector sort(CharacterVector x) {

  std::sort(x.begin(), x.end());
  return x;
}
Run Code Online (Sandbox Code Playgroud)

但是,由于这是我在这个软件包中唯一计划使用的C++,因此引入对Rcpp的依赖似乎不值得.没有它就做同样的事情并不容易.整数很容易:

#include <R.h>
#include <Rdefines.h>
#include <algorithm>
#include <string.h>
using namespace std;
SEXP sort(SEXP x) {
  int* xx = INTEGER(x);
  std::sort(xx, xx+LENGTH(x));
  return(x);
}
Run Code Online (Sandbox Code Playgroud)

但没有std::vector<string>char**相当于INTEGER().

如何在不向Rcpp引入依赖的情况下模拟相同的代码?

这里有一些问题讨论如何使用CHAR(STRING_ELT())转换单个字符串,但不清楚如何转换为字符串数组/向量.

c++ string r

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