这是一个与Rcpp转换相关的Q.我正在寻找将长std :: vector转换为Rcpp矩阵对象,但想知道是否有一个简单的转换格式.当然,你可以遍历每个元素并填充一个空的Rcpp矩阵,但这似乎容易出错,如果可以采用更方便的方法,则可能是不必要的.
我问的原因是我想在一些现有的C++代码中使用OpenMP,但是直接在OpenMP循环中将元素存储在Rcpp矩阵对象中似乎不能正常工作(而加载std :: vector对象并转换在OpenMP循环完成后到矩阵似乎是解决问题的一个不错的方法).
任何帮助将不胜感激!
如何在 64 位向量中将 NA 值从 Rcpp 传递给 R?
我的第一种方法是:
// [[Rcpp::export]]
Rcpp::NumericVector foo() {
Rcpp::NumericVector res(2);
int64_t val = 1234567890123456789;
std::memcpy(&(res[0]), &(val), sizeof(double));
res[1] = NA_REAL;
res.attr("class") = "integer64";
return res;
}
Run Code Online (Sandbox Code Playgroud)
但它产生
#> foo()
integer64
[1] 1234567890123456789 9218868437227407266
Run Code Online (Sandbox Code Playgroud)
我需要得到
#> foo()
integer64
[1] 1234567890123456789 <NA>
Run Code Online (Sandbox Code Playgroud) 我一直在努力在R中加载rJava包.
我收到以下消息
> library(rJava)
Error in inDL(x, as.logical(local), as.logical(now), ...) :
unable to load shared library \
'C:/PROGRA~1/R/R-210~1.1/library/rJava/libs/rJava.dll':
LoadLibrary failure: The specified module could not be found.
Error : .onLoad failed in 'loadNamespace' for 'rJava'
Error: package/namespace load failed for 'rJava'
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多解决方案,他们都在我的头脑中.在某些时候我甚至得到了
> R Console: Rgui.exe - System Error The
> program can't start because
> MSVCR71.dll is is missing from your
> computer. Try reinstalling the program
> to fix this problem.
Run Code Online (Sandbox Code Playgroud)
我确保我能想到的一切都在路上
> C:\Program Files\R\Rtools\bin;C:\Program Files\R\Rtools\perl\bin;
C:\Program Files\R\Rtools\MinGW\bin;%SystemRoot%\system32; …Run Code Online (Sandbox Code Playgroud) 我试图在R中做一个"分组依据" - 样式加权平均值.有一些基本意思,下面的代码(使用Hadley的plyr包)运行良好.
ddply(mydf,.(period),mean)
Run Code Online (Sandbox Code Playgroud)
如果我使用相同的方法加权.我得到以下错误"'x'和'w'必须具有相同的长度",我不明白,因为weighted.mean部分在ddply之外工作.
weighted.mean(mydf$mycol,mydf$myweight) # works just fine
ddply(mydf,.(period),weighted.mean,mydf$mycol,mydf$myweight) # returns the erros described above
ddply(mydf,.(period),weighted.mean(mydf$mycol,mydf$myweight)) # different code same story
Run Code Online (Sandbox Code Playgroud)
我想过编写一个自定义函数而不是使用weighted.mean然后将它传递给ddply,甚至用子集从头开始编写新东西.在我的情况下,希望这将是太多的工作,但应该有一个更聪明的解决方案已经存在的东西.
thx提前任何建议!
我正在尝试更新我们的安装程序,以便用户只需双击文件即可轻松安装所有依赖项和软件.这是一套应用程序,将部署在干净的Ubuntu 8.04安装上.我已经调查了制作.deb文件,但列出依赖项不起作用,因为没有可用的Internet访问.并且,任何设置本地apt存储库的脚本仍然需要从命令行运行.有没有办法将deb文件放在deb文件中?
我知道很多公司都发布了chmod + x的shell脚本,然后执行.这是不可接受的.这是不可能的,这是荒谬的; 特别是考虑到分布和架构是固定的.
该QTableWdiget是神话般的简单的网格显示.更改颜色,字体等很简单.
但是,我没有设法使用更少的垂直空白给网格一个"更紧凑"的外观.我看到Qt文档谈论(例如这里)
围绕小部件,但是当我设置这些时,我只能在整个网格小部件而不是内部进行更改.
如何直接设置此(使用样式表或硬编码选项)以使QTableWidget显示更紧凑?
我使用的是ubuntu 9.10,它带有gcc 4.4.如何在不搞砸我的gcc 4.4的情况下安装gcc 4.5.环境.我只需要gcc 4.5来编译1个应用程序.
谢谢.
我试图在一个脚本中使用R作为一个简单的命令行绘图工具.即用户管道在csv文件中,他们得到一个情节.我可以得到R罚款并通过各种临时文件阴谋来显示情节,但我遇到了障碍.在用户关闭窗口之前,我无法弄清楚如何让R继续运行.
如果我绘制并退出,则绘图立即消失.如果我绘制并使用某种无限循环,用户就无法关闭该图; 他必须使用我不喜欢的中断退出.我看到有一个getGraphicsEvent函数,但它声称不支持该设备(X11).无论如何,它似乎实际上不支持onClose事件,只有onMouseDown.
关于如何解决这个问题的任何想法?
编辑:感谢Dirk提供了查看tk界面的建议.这是我的测试代码:
require(tcltk)
library(tkrplot)
## function to display plot, called by tkrplot and embedded in a window
plotIt<-function(){ plot(x=1:10, y=1:10) }
## create top level window
tt<-tktoplevel()
## variable to wait on like a condition variable, to be set by event handler
done <- tclVar(0)
## bind to the window destroy event, set done variable when destroyed
tkbind(tt,"<Destroy>",function() tclvalue(done) <- 1)
## Have tkrplot embed the plot window, then realize it with tkgrid
tkgrid(tkrplot(tt,plotIt))
## wait until …Run Code Online (Sandbox Code Playgroud) 是否可以从c ++调用绘图函数?目前,当我尝试这样做时,ubuntu终端会冻结一段时间(可能是创建3d绘图然后旋转整整360度的持续时间)然后解冻,而不会弹出新窗口.这是预期的行为还是我做错了什么?如何使用rinside和rcpp从c ++中运行绘图(R图形)?
日Thnx
-Egon