我有一个R包,使用OpenMP很容易加速.如果您的编译器支持它,那么您将获得胜利,如果没有,那么将忽略编译指示并获得一个核心.
我的问题是如何让包构建系统使用正确的编译器选项和库.目前我有:
PKG_CPPFLAGS=-fopenmp
PKG_LIBS=-fopenmp
Run Code Online (Sandbox Code Playgroud)
在我的机器上硬编码到src/Makevars中,并使用OpenMP支持构建它.但是它会在检查时产生关于非标准编译器标志的警告,并且在没有openMP功能的机器上可能会很难.
解决方案似乎是使用configure和autoconf.这里有一些信息:
http://cran.r-project.org/doc/manuals/R-exts.html#Using-Makevars
包括一个在odbc功能中编译的复杂示例.但我看不出如何开始调整以检查openmp和libgomp.
我所看到的关于使用openMP的R软件包似乎都没有设置.
那么有没有人有一个使用OpenMP设置R包的演练?
[编辑]
我现在可能已经破解了.我有一个configure.ac脚本和一个带有@ FOO @ substitutions的Makevars.in用于编译器选项.但现在我不确定工作流程.是吗:
但是,仅仅是明确的,"autoconf的configure.in>配置"不上运行包安装-其纯粹的开发过程中创建的配置脚本的分布- amirite?
我无法将wordnet加载到R.我使用R x64 2.14.1.我安装了包wordnet,然后我尝试加载包.
> library(wordnet)
Warning message:
In initDict() :
cannot find WordNet 'dict' directory: please set the environment variable WNHOME to its parent
Run Code Online (Sandbox Code Playgroud)
怎么了?如何以及如何设置目录WNHOME.
问题出在标题中.基本上我正在寻找R的替代品.我一直在使用R,有一些非常好的东西(特别是data.frame plyr和ggplot),但我真的很喜欢Haskell和类型推断,所以我是想知道使用Haskell进行"简单"统计分析是一个不错的选择.
我的基本需求是:
然而,在处理真实世界数据之前,我对Haskell的体验一切正常.你总是遇到性能问题(并且很快),因为即使理论上你应该编写功能代码并且不担心计算机正在做什么,如果你不这样做并且不使用适当的库并且不是Haskell专家,东西很慢.
我正在尝试将指数分布拟合到我的数据中,但出现以下错误
"Error in fitdist(x41, "exp", method = "mle") :
the function mle failed to estimate the parameters,
with the error code 100"
Run Code Online (Sandbox Code Playgroud)
我试过 mme 有效,但我有其他带有 mle 的分布,所以我也需要指数分布的 mle。我已经被困了好几天了。任何人都可以帮助我吗?
我的数据看起来像这样。
2795.5
304.6833
2786.45
5897.75
4381.367
1178.1
351.3167
109.85
459.6167
13.26667
0.033333
846.3833
3698.45
1527.1
94.31667
15.01667
271.8833
473
Run Code Online (Sandbox Code Playgroud)
这是我的代码
ExpMle41 <- fitdist(x41, "exp", method="mle")
ExpMle41
plot(ExpMle41)
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。谢谢你。
我有一个包含NA的值向量.这些值需要由无法处理NA的外部程序处理,因此它们被剥离,写入文件,处理,然后读回,产生非NA数量长度的向量.例如,假设输入为7 3 4 NA 5 4 6 NA 1 NA,那么输出将只是7个值.我需要做的是将NA重新插入到位.
因此,给定两个向量X和Y:
> X
[1] 64 1 9 100 16 NA 25 NA 4 49 36 NA 81
> Y
[1] 8 1 3 10 4 5 2 7 6 9
Run Code Online (Sandbox Code Playgroud)
生产:
8 1 3 10 4 NA 5 NA 2 7 6 NA 9
Run Code Online (Sandbox Code Playgroud)
(你可能会注意到X是Y ^ 2,这只是一个例子).
我可以敲出一个函数来做这个,但我想知道是否有任何好的狡猾的方法做到这一点...分裂,列表,长度...嗯......
在R中,使用maps包和gcIntermediate函数,如何在两个国家/地区之间绘制线条?它需要lat-long,但我不确定我应该为各国提供什么样的长期(比如我想在美国和瑞典之间画一条线)
我正在研究一个R包,我需要一些帮助来编写R测试函数,这些函数用于检查是否在C端代码上抛出正确的警告然后在R端捕获.让我给你一些关于我正在做的工作的背景:
到目前为止,我写了类似的东西:
counter <- 0
tryCatch({
function_im_testing()
}, warning = function(war) {
# Check if warning is as expected and if so increment counter
if(toString(war)=="The warning I'm expecting/testing for"){
print(toString(war))
counter <- counter + 1
}
}, error = function(err) {
print(toString(err))
}, finally = {
print("Leaving tryCatch")
})
# Stop if the 3 warnings we expected aren't present
stopifnot(counter == 3)
Run Code Online (Sandbox Code Playgroud)这是我正在使用的方法,到目前为止,我甚至无法通过尝试获取toString(war)和"警告我期望/测试"来获得if语句.事情.除此之外,这种方法非常草率和不可靠,这使我相信有更好的方法.那么,有没有更好的方法来做到这一点?
我正在绘制一些数据并具有以下代码:
ggplot(aes(x = x, y = y), data = data) +
geom_point(alpha = 1/15, color = 'blue')+
scale_y_continuous('y')+
scale_x_continuous('x')+
geom_smooth(stat = 'smooth', color = 'Red')
Run Code Online (Sandbox Code Playgroud)
该图如下所示:
但是,如果我在geom_smooth
函数中指定'gam' ,例如:
geom_smooth(stat = 'smooth', color = 'Red', method = 'gam')
Run Code Online (Sandbox Code Playgroud)
我得到了不同的结果:
为什么会这样?
使用units
包我可以创建一个带有物理单位的向量,例如:
library(units)
a = 1:10
units(a) <- with(ud_units, m/s)
a
## Units: m/s
## [1] 1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
但是如何在没有单位的情况下回到普通的R矢量?
unclass(a)
完成大部分工作,但在向量中留下了一堆属性:
unclass(a)
## [1] 1 2 3 4 5 6 7 8 9 10
## attr(,"units")
## $numerator
## [1] "m"
##
## $denominator
## [1] "s"
##
## attr(,"class")
## [1] "symbolic_units"
Run Code Online (Sandbox Code Playgroud)
但我觉得应该有一个更简单的方法.分配为unitless
没有帮助,它创建一个具有"无单位"单位的向量.
小插图中没有任何东西......