小编tfl*_*tre的帖子

R install.packages返回"无法创建锁定目录"

下载Rcpp软件包时出现此错误:

> install.packages("Rcpp", dependencies=TRUE)
Installing package(s) into ‘/home/me/src/Rlibs’ (as ‘lib’ is unspecified)
trying URL 'http://cran.us.r-project.org/src/contrib/Rcpp_0.10.2.tar.gz'
Content type 'application/x-gzip' length 2380089 bytes (2.3 Mb)
...
Warning in dir.create(lockdir, recursive = TRUE) :
  cannot create dir '/home', reason 'Permission denied'
ERROR: failed to create lock directory ‘/home/me/src/Rlibs/00LOCK-Rcpp’
...
Run Code Online (Sandbox Code Playgroud)

由于我的机器在计算机集群上,我在不同的节点上尝试过,我小心翼翼地删除了/ tmp中下载的临时文件.奇怪的是我有权写入/ home/me/src/Rlibs /.所以我的问题是:

  1. 为什么R想在/ home中拥有写作权,而只需要在/ home/me /中写作权?
  2. 我该如何修复错误?

> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-redhat-linux-gnu (64-bit)
locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=C                 LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C …
Run Code Online (Sandbox Code Playgroud)

r package

47
推荐指数
3
解决办法
3万
查看次数

在R中,当使用gridBase在图中嵌入子图时,如何防止pdf中的空白页

正如这里所解释的那样gridBase,即使两个图都使用R的基本图形系统,也可以很容易地将图形嵌入到现有图中.但是,当将整个图形保存为pdf时,第一页始终为空白.怎么预防这个?

这是一个例子:

require(gridBase)

## generate dummy data
set.seed(1859)
x <- 1:100
y <- x + rnorm(100, sd=5)
ols <- lm(y ~ x)

pdf("test.pdf")

## draw the first plot
plot.new() # blank page also happens when using grid.newpage()
pushViewport(viewport())
plot(x, y)

## draw the second plot, embedded into the first one
pushViewport(viewport(x=.75,y=.35,width=.2,height=.2,just=c("center","center")))
par(plt=gridPLT(), new=TRUE)
hist(ols$residuals, main="", xlab="", ylab="")
popViewport(2)

dev.off()
Run Code Online (Sandbox Code Playgroud)

plot r

13
推荐指数
1
解决办法
8151
查看次数

dos2unix不会转换^ M.

我将结果导出到Windows 7上运行的程序的文本文件中,并将文件复制到Xubuntu 14.04上.在一个终端,我跑了dos2unix file.txt,告诉我converting file out_mapqtl.txt to Unix format.但是,当我查看该文件时less,我仍然看到Windows行尾为^ M,并wc -l返回"0".

我试过这里描述的几件事,但都没有用.然后我在Vim中打开文件并:%s/\r/\r/g按照那里的说明进行操作,效果很好.所以任何想法为什么dos2unix不起作用?有没有办法避免每次都打开Vim?

vim dos2unix

13
推荐指数
2
解决办法
7249
查看次数

在R中,如何对函数的参数使用"null"默认值?

这是我目前的代码:

my.function <- function( my.arg="" ){
  if(my.arg == "")
    my.arg <- rnorm(10)
  return( mean(my.arg) )
}
Run Code Online (Sandbox Code Playgroud)

它告诉我这个:

> my.function( rbinom(10, 100, 0.2) )
[1] 18.5
Warning message:
In if (a == "") a <- rnorm(10) :
  the condition has length > 1 and only the first element will be used
Run Code Online (Sandbox Code Playgroud)

我尝试过my.arg=c(),或者my.arg=0,但我总是得到警告或错误.R手册在这个问题上没有说太多.

任何的想法?提前致谢!

r default-value

10
推荐指数
2
解决办法
1万
查看次数

在C++中,如何使用向量视图和gsl_stats_mean计算整数向量的均值?

我的程序操纵整数的STL向量,但有时,我需要计算一些统计数据.因此我使用GSL功能.为了避免将STL向量复制到GSL向量中,我创建了一个GSL向量视图,并将其提供给GSL函数,如下面这段代码:

#include <iostream>
#include <vector>
#include <gsl/gsl_vector.h>
#include <gsl/gsl_statistics.h>
using namespace std;

int main( int argc, char* argv[] )
{
  vector<int> stl_v;
  for( int i=0; i<5; ++i )
    stl_v.push_back( i );

  gsl_vector_int_const_view gsl_v = gsl_vector_int_const_view_array( &stl_v[0], stl_v.size() );

  for( int i=0; i<stl_v.size(); ++i )
    cout << "gsl_v_" << i << "=" << gsl_vector_int_get( &gsl_v.vector, i ) << endl;

  cout << "mean=" << gsl_stats_mean( (double*) gsl_v.vector.data, 1, stl_v.size() ) << endl;
}
Run Code Online (Sandbox Code Playgroud)

编译完成后(gcc -lstdc ++ …

c++ vector gsl

7
推荐指数
1
解决办法
6878
查看次数

在R中,如何过滤列表列表?

根据手册,Filter适用于矢量,它也适用于列表,例如:

z <- list(a=1, b=2, c=3)
Filter(function(i){
  z[[i]] > 1
}, z)
$b
[1] 2

$c
[1] 3
Run Code Online (Sandbox Code Playgroud)

但是,它不适用于列表列表,例如:

z <- list(z1=list(a=1,b=2,c=3), z2=list(a=1,b=1,c=1), z3=list())
Filter(function(i){
  if(length(z[[i]])>0){
    if(z[[i]]$b > 1)
      TRUE
    else
      FALSE
  }
  else
    FALSE
}, z)
Error in z[[i]] : invalid subscript type 'list'
Run Code Online (Sandbox Code Playgroud)

在不使用嵌套循环的情况下过滤列表列表的最佳方法是什么?它也可以是列表清单......

(我尝试使用嵌套lapply,但无法使其工作.)

编辑:在第二个例子中,这是我想要获得的:

list(z1=list(a=1,b=2,c=3))
Run Code Online (Sandbox Code Playgroud)

也就是说,没有z $ z2,因为z $ z2 $ b <1,没有z $ z3,因为它是空的.

r list filter

7
推荐指数
2
解决办法
9549
查看次数

为什么我的单元测试在R控制台中成功运行但是在"make test"中返回错误?

我正在学习如何开发R包.一切顺利,感谢R手册和RUnit的这个维基.更确切地说,当我在一个新的R控制台中启动我的单元测试时,所有测试都成功完成:

#rm(list=ls())
library(RUnit)
testSuite <- defineTestSuite("current", "~/src/mypkg/inst/unitTests/")
isValidTestSuite  # returns TRUE
runTestSuite(testSuite)  # returns Number of errors: 0 and Number of failures: 0
Run Code Online (Sandbox Code Playgroud)

但是,当我在终端中启动它们时,我收到一个错误(该函数使用我在"〜/ src/Rlibs"中安装的包GenomicRanges):

$ make test R_LIBS="~/src/Rlibs/"
...
ERROR in test.MyFunction: Error in match(x, table, nomatch = 0L) :
  'match' requires vector arguments
Run Code Online (Sandbox Code Playgroud)

我没有看到导致此错误的原因.我想你需要更多关于代码和测试的信息,但这并不容易,因为我不知道如何在一个小例子上复制这个错误而不为此创建一个新包.也许你们中的一些人会对这个错误信息有所了解并给我一些提示?

编辑:帮助别人给我一个关于错误的提示,这是我为虚拟包编写的代码.目的是找出"g"项中包含哪些"p"项.

这是测试:

test.MyFunction <- function(){
  g <- list(c1=data.frame(name=c("g1","g2"), start=c(11,1111),
                  end=c(500,1500), strand=c("+","+"), stringsAsFactors=FALSE))
  p <- list(c1=data.frame(name=c("p1","p2"), strand=c("+","-"),
                   start=c(11,601), end=c(20, 610), stringsAsFactors=FALSE))
  exp <- list(c1=list(g1=c("p1")))  # item "p1" is included in …
Run Code Online (Sandbox Code Playgroud)

unit-testing r

7
推荐指数
1
解决办法
7954
查看次数

在C++中,如何只使用带有必需参数的长选项?

在C++程序中,我想要一个带有必需参数的"long-only"选项.下面是我使用getopt_long()的最小例子,但它不起作用:

#include <getopt.h>
#include <cstdlib>
#include <iostream>
using namespace std;

void help (char ** argv)
{
  cout << "`" << argv[0] << "` experiments with long options." << endl;
}

void parse_args (int argc, char ** argv, int & verbose, int & param)
{
  int c = 0;
  while (1)
  {
    static struct option long_options[] =
      {
        {"help", no_argument, 0, 'h'},
        {"verbose", required_argument, 0, 'v'},
        {"param", required_argument, 0, 0}
      };
    int option_index = 0;
    c = getopt_long (argc, …
Run Code Online (Sandbox Code Playgroud)

c++ options getopt

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

使用"make check"为使用程序二进制文件的测试启动bash脚本

我在我的C++包中使用Autotools.我的包有一个二进制文件,例如名为"myprog".我写了一个bash脚本,"test.bash",其中包含一个功能测试.该脚本有4个步骤:(1)创建输入文件,(2)生成预期输出文件,(3)在输入文件上启动"myprog",(4)将"prog"的输出与预期输出进行比较.

在步骤3中,"test.bash"需要知道"myprog"的路径.如果我自己在独立版本上启动"test.bash",我可以在命令行中将"myprog"的路径作为选项.但是,可以使用当我make check还是make distcheck

我正在阅读Autotools/Automake手册.我想通过使用变量设置有一种方法configure,但我不知道如何使用它们,所以任何解决方案都非常受欢迎!

autotools

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

从Rmd文档一次执行所有R块

最小的Rmarkdown文档具有YAML标头,降价语法和R代码块。编写这样一个多语言文件,我使用Emacs编辑器,并在其中RMD文档被打开的缓冲区,在polymode

一个典型的文档有多个R块。当我在Rmd文档的中间编写/调试R块时,我在ESS模式下有第二个缓冲区,内部运行着R,并且我经常不得不通过从Rmd发送R命令来重新执行所有先前的块文件(第一个缓冲区)放入R控制台(第二个缓冲区)。

是否有一个命令可以执行所有块中的所有命令?

另一个问题来看,似乎org-mode可以做到这一点。但是可以在我的环境中做到吗?

emacs r ess r-markdown

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

标签 统计

r ×6

c++ ×2

autotools ×1

default-value ×1

dos2unix ×1

emacs ×1

ess ×1

filter ×1

getopt ×1

gsl ×1

list ×1

options ×1

package ×1

plot ×1

r-markdown ×1

unit-testing ×1

vector ×1

vim ×1