是否可以从c ++调用绘图函数?目前,当我尝试这样做时,ubuntu终端会冻结一段时间(可能是创建3d绘图然后旋转整整360度的持续时间)然后解冻,而不会弹出新窗口.这是预期的行为还是我做错了什么?如何使用rinside和rcpp从c ++中运行绘图(R图形)?
日Thnx
-Egon
我正在尝试使用与Rcpp连接的C++程序在Linux机器(CentOS)上运行R分解(LAPACKE_dgeqrf).不幸的是,我看到只有100%使用top.这也发生在Red Hat Enterprise Linux服务器上.但是,从终端(独立于R外部)启动时,C++程序(带有LAPACKE_dgeqrf)以nthreads*100%运行.我用Open编译了OpenBLAS
NO_AFFINITY=1
Run Code Online (Sandbox Code Playgroud)
并尝试过
export OPENBLAS_NUM_THREADS=4
export GOTO_NUM_THREADS=4
export OMP_NUM_THREADS=4
export OPENBLAS_MAIN_FREE=1
Run Code Online (Sandbox Code Playgroud)
什么都行不通.虽然在Mac上一切正常.并行R包中的'mcaffinity()'返回NULL.我用R配置了R.
configure 'CFLAGS=-g -O3 -Wall -pedantic' 'CXXFLAGS=-g -O3 -Wall -pedantic' 'FCFLAGS=-g -O3' 'F77FLAGS=-g -O3' '--with-system-zlib' '--enable-memory-profiling'
Run Code Online (Sandbox Code Playgroud)
我的C++代码:
#include <Rcpp.h>
#include <lapacke.h>
#include <cblas.h>
//[[Rcpp::export]]
Rcpp::NumericMatrix QRopenblas(Rcpp::NumericMatrix X)
{
// Declare variables
int n_rows = X.nrow(), n_cols = X.ncol(), min_mn = std::min(n_rows, n_cols);
Rcpp::NumericVector tau(min_mn);
// Perform QR decomposition
LAPACKE_dgeqrf(CblasColMajor, n_rows, n_cols, X.begin(), n_rows, tau.begin());
return X;
}
Run Code Online (Sandbox Code Playgroud)
我的R代码:
PKG_LIBS <- '/pathto/openblas/lib/libopenblas.a'
PKG_CPPFLAGS <- '-I/pathto/openblas/include'
Sys.setenv(PKG_LIBS = …Run Code Online (Sandbox Code Playgroud) subversion存储库包含从源代码生成doxygen的html,latex和man目录.即使对于小的源代码更改,也会使用随机名称生成新文件,这会在版本控制系统中进行大的更改.
这有什么办法吗?如何在包含doxygen生成的文档的同时最小化修订之间的更改集?或者,我怎么能找到不再使用的doxygen-genrated文件,应该删除?
使用64位ODBC驱动程序通过DSN连接到Oracle的winxp64位上的Revolution R 64bit中的RODBC错误
library(RODBC)
db <- odbcConnect("oraclemiso",uid="epicedf",pwd="…")
rslts = sqlQuery(db, "select count(*) from FTRAuction")
Error in .Call(C_RODBCFetchRows, attr(channel, "handle_ptr"), max, buffsize, :
negative length vectors are not allowed
Run Code Online (Sandbox Code Playgroud)
我能够连接但在查询内容时出错,以下工作
library(RODBC)
channel <- odbcConnect("OraLSH", <user>, <password>))
odbcQuery (channel, "select sysdate from dual")
sqlGetResults(channel, as.is=FALSE, errors=FALSE, max=1, buffsize=1,
nullstring=NA, na.strings="NA", believeNRows=TRUE, dec=getOption("dec"))
SYSDATE
1 2010-01-24 15:10:02
Run Code Online (Sandbox Code Playgroud)
但如果我之前不知道rowsize(max = 1)怎么办?
谢谢,阿伦
现代Unix shell环境有很多好东西,我需要的东西几乎总是安装在我的机器上或者快速下载; 麻烦就是找到它.在这种情况下,我试图找到基本的统计操作.
例如,现在我正在为基于爬虫的应用程序进行原型设计.感谢wget加上其他一些好东西,我现在有几十万个文件.所以我可以用数十亿个文件估算这样做的成本,我想得到文件大小超过一定限度的平均值和中位数.例如:
% ls -l | perl -ne '@a=split(/\s+/); next if $a[4] <100; print $a[4], "\n"' > sizes
% median sizes
% mean sizes
Run Code Online (Sandbox Code Playgroud)
当然,我可以用perl或awk编写自己的中位数和平均值.但是,不是已经有一些noob友好的包,除此之外还有更多吗?
我在下面有以下函数,我用它来解析命令行参数,以便我可以从命令行运行R脚本:
parseArguments <- function() {
text1 <- commandArgs(TRUE)
eval(parse(text=gsub("\\s", ";", gsub("--","", text1))))
args <- list()
for( ar in ls()[! ls() %in% c("text1", "args")] ) {args[ar] <- get(ar)}
return (args)
}
Run Code Online (Sandbox Code Playgroud)
当我尝试R使用以下命令行参数调用使用上述函数解析CL参数的脚本时,这是一个CLI会话输出:
./myscript.R --param1='XLIF' --param2='ESX' --param3=5650.0 --param4=5499.2 --param5=0.0027397260274 --param6='Jul' --riskfreerate=0.817284313119 --datafile='/path/to/some/datafile.csv' --imagedir='/path/to/images' --param7=2012 --param8=2
Error in parse(text = gsub("\\s", ";", gsub("--", "", text1))) :
8:10: unexpected '/'
7: riskfreerate=0.817284313119
8: datafile=/
^
Calls: parseArguments -> eval -> parse
Execution halted
Run Code Online (Sandbox Code Playgroud)
救命?
[[更新]]
我遵循了Dirk的建议并安装了optparse库.我的代码现在看起来像这样:
library(optparse)
# …Run Code Online (Sandbox Code Playgroud) 从stan 网页开始标准示例时,如下所示:
schools_code <- '
data {
int<lower=0> J; // number of schools
real y[J]; // estimated treatment effects
real<lower=0> sigma[J]; // s.e. of effect estimates
}
parameters {
real theta[J];
real mu;
real<lower=0> tau;
}
model {
theta ~ normal(mu, tau);
y ~ normal(theta, sigma);
}
'
schools_dat <- list(J = 8,
y = c(28, 8, -3, 7, -1, 1, 18, 12),
sigma = c(15, 10, 16, 11, 9, 11, 10, 18))
fit <- stan(model_code = schools_code, …Run Code Online (Sandbox Code Playgroud) 我已经写了C中的函数"富",我想从R程序中调用.该函数接受矩阵作为输入并对其执行一些操作(例如,为每个元素添加1).虽然单个矢量很容易
.C("foo", n=as.integer(5), x=as.double(rnorm(5)))
Run Code Online (Sandbox Code Playgroud)
用foo实现的
void foo(int *nin, double *x)
{
int n = nin[0];
int i;
for (i=0; i<n; i++)
x[i] = x[i] * x[i];
}
Run Code Online (Sandbox Code Playgroud)
如何传入二维数组?如果我改变了"双*X"到"双**X"它给出了一个分段错误.任何指针赞赏.
我对R很新,我遇到了Rcpp的问题.从这个URL http://www.r-bloggers.com/installing-rcpp-on-windows-7-for-r-and-c-integration/我已经按照安装Rcpp的所有步骤进行了操作.我还安装并加载了RcppClassic和Rinside.当我尝试运行建议的代码时:
# install packages
install.packages(c("Rcpp", "rbenchmark", "inline", "Runit"))
# load main two packages
library(Rcpp)
library(inline)
# do something with Rcpp to quickly check that it works
body <- '
NumericVector xx(x);
return wrap( std::accumulate( xx.begin(), xx.end(), 0.0));'
add <- cxxfunction(signature(x = "numeric"), body, plugin = "Rcpp")
x <- 1
y <- 2
res <- add(c(x, y))
res
#[1] 3
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
package ‘Rcpp’ successfully unpacked and MD5 sums checked
Warning: cannot remove prior installation of package ‘Rcpp’ package
‘rbenchmark’ …Run Code Online (Sandbox Code Playgroud) 我正在开发的R包,它作为从被称为平行的rHPC包装功能的包装ctools.我知道如果我希望我的包需要这些包,我需要将它们包含在文件的Imports部分中DESCRIPTION.安装我的软件包时,将从CRAN安装这些软件包.同样,Suggests如果不需要,我可以将它们放在该部分中,但是很有用.这些不会随我的包安装.
但是,我已经分叉了Rhpc包并添加了一个我在ctools包中使用的函数.如何从我的GitHub仓库获取我的软件包以建议/导入此软件包,而不是安装Rhpc软件包,它会执行devtools::install_github("bamonroe/Rhpc")吗?