小编Dav*_*uer的帖子

将向量的唯一值映射到连续整数的有效方法是什么?

我在R中有一个数据帧,其中有一个非连续数字(data$SiteID)的向量,我想映射到一个连续数字(data$site)的向量到的唯一值data$SiteID。在每个站点中,我想映射data$TrtID到其他唯一的0位置data$TrtID == 'control'或下一个顺序整数data$TrtID

data <- data.frame(SiteID = c(1,1,1,9,'108','108','15', '15'), 
                   TrtID = c('N', 'control', 'N', 'control', 'P', 'control', 'N', 'P'))
Run Code Online (Sandbox Code Playgroud)
  1. data$site应该是c(1,1,1,2,3,3,4,4)
  2. data$trt应该是c(1,0,1,0,1,0,0,1)

r

4
推荐指数
2
解决办法
3818
查看次数

可以R paste()输出"\"吗?

Intro to R手册中所述,

paste("\\")
Run Code Online (Sandbox Code Playgroud)

版画

[1] "\\"
Run Code Online (Sandbox Code Playgroud)

是否可以打印出粘贴

[1] "\"
Run Code Online (Sandbox Code Playgroud)

更新:我不希望Gavin这个很好的答案被卡在下面的评论中,所以我将它贴在这里:

print(xtable(as.matrix("\\citep{citation}")), sanitize.text.function = function(x) {x}) 
Run Code Online (Sandbox Code Playgroud)

text r

4
推荐指数
2
解决办法
2280
查看次数

insertSource()出错:"找不到对象'.cacheOnAssign'"

我正在尝试使用该功能insertSource(R 2.12中的新功能)来更新我所做的更改的功能.

但是,当我以这种方式使用该功能时:

insertSource('filename.R', package = 'mypackage')
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Error in get(this, envir = envp) : object '.cacheOnAssign' not found
Run Code Online (Sandbox Code Playgroud)

不幸的是我无法想出一个简单的可重复的例子 - 如果有人会有所帮助,请建议我如何做 - 但我发现以下代码确实有效:

system("echo 'nls <- function(nls) return(nls)' > foo.R")
insertSource('foo.R', package = stats)
Run Code Online (Sandbox Code Playgroud)

stats包和mypackage之间的一个区别是库位置(mypackage位于'〜/ lib/R /'.(更新):当.libPaths('~/lib/R')进入时仍然出现错误.Rprofile,而googleing'.cacheOnAssign'只返回6次点击,其中两次对这个问题.

问题:

  1. 错误是什么意思?
  2. 我该怎么用insertSource

调试

运用 options(error = recover)

options(error = recover) 
Error in get(this, envir = envp) : object '.cacheOnAssign' not found
Called from: get(this, envir = envp)
Browse[1]> where
where 1: …
Run Code Online (Sandbox Code Playgroud)

packages r

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

由于包依赖性导致R CMD检查错误

背景

我创建一个newpackage取决于oldpackage,并表示在文件中这种依赖关系newpackage/DESCRIPTION.

此外,

  • oldpackage安装在目录中,~/lib/R

  • 我的.Rprofile包括.libPaths("~/lib/R")

    • 因此,我可以成功加载oldpackage而无需指定库位置,例如,使用library(oldpackage)R中的命令

尽管能够在没有指定库的情况下加载包,但是R CMD check newpackage给出了一个错误,表明它不能很好地解决oldpackage:

checking whether the package can be loaded ... ERROR 
Loading required package: oldpackage
Error: package 'oldpackage' could not be loaded
In addition: Warning message:
In library(pkg, character.only = TRUE, logical.return = TRUE, lib.loc = lib.loc) :
  there is no package called 'oldpackage'
Execution halted


It looks like this package has a …
Run Code Online (Sandbox Code Playgroud)

r compilation package

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

如何确保在Ubuntu中安装兼容版本的JAGS和rjags?

我想编写一个脚本,在新的ubuntu安装上安装JAGS和rjags,这将独立于这些软件包的当前可用版本.我想知道如何在避免版本冲突的同时做到这一点.

我有以下R脚本,initialize.R:

system('apt-get install jags') 
install.packages('rjags')
Run Code Online (Sandbox Code Playgroud)

这样我就可以从bash运行了:

sudo R --vanilla < initialize.R
Run Code Online (Sandbox Code Playgroud)

但是,Ubuntu存储库中最新版本的JAGS是2.​​2,CRAN提供rjag版本取决于JAGS> 3.0.

我感兴趣的安装compatable JAGSrjags,或许可以:

  1. 安装特定版本的JAGS(例如2.2)和兼容的rjags版本(哪个版本?)
  2. 通常在ubuntu存储库中安装当前版本的JAGS以及相应的rjags版本,或者
  3. 通常在cran和适当版本的JAGS上安装最新版本的rjags

做案例1的能力是必不可少的,但我也很好奇如何实施案例2和/或3.

问题:

  • 我怎样才能做到这一点?
  • 有更健全的方法吗?

更新:在Dirk的答案中的以下链接,以下工作:

add-apt-repository ppa:marutter/rrutter
apt-get update
apt-get install r-cran-rjags 
Run Code Online (Sandbox Code Playgroud)

bash ubuntu r package

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

我可以运行位于远程服务器上本地计算机上的bash脚本吗?

我有本地脚本,我想在远程服务器上运行.我已经设置了ssh密钥对来启用没有密码的登录.

我目前的方法是将脚本rsync到服务器然后运行它:

ssh user@remoteserver "rsync localserver:script.sh ./; ./script.sh; rm script.sh"
Run Code Online (Sandbox Code Playgroud)

然而,这似乎是一个黑客; 是否有更友好的方式来做到这一点?

更新:既然有这么多好的答案,任何人都可以通过提供理由帮助我选择"最好的"吗?

ssh bash shell

3
推荐指数
1
解决办法
3947
查看次数

是否可以将字符串转换为R中的首字母缩写词,并将其与其他行的数据连接起来?

这是一个示例数据集:

data <- data.frame (author = c('bob', 'john', 'james'), 
                    year = c(2000, 1942, 1765), 
                    title = c('test title one two three', 
                              'another test title four five', 
                              'third example title'))
Run Code Online (Sandbox Code Playgroud)

我想自动化制作bibtex引用的过程,例如使用这样的函数:

bibtexify <- function (author, year, title) {
      acronym <- convert.to.acronym(title)
      paste(author, year, acronym, sep='')
      }
Run Code Online (Sandbox Code Playgroud)

这样我得到以下结果:

with(data, bibtexify(author, year, title))
[1] 'bob2000tto'
[2] 'john1942att'
[3] 'james1765tet'
Run Code Online (Sandbox Code Playgroud)

可以在R中这样做吗?

谢谢!

text r

3
推荐指数
1
解决办法
577
查看次数

附加数据帧而不重命名的推荐做法?

背景

我正在编写一个不断更新数据帧的脚本:

 ## Step A calculations
 results <- data.frame(results.from.A)

 ## Step B calculations

 results <- rbind(results, results.from.B)

 ##At the end of script
 print(xtable(results))
Run Code Online (Sandbox Code Playgroud)

但是这种现有对象名称的重新分配results <- f(results似乎可能是不好的做法.

我也可以这样做:

 ##At the end of script
 results <- as.data.frame(rbind(results.from.A, results.from.B))
Run Code Online (Sandbox Code Playgroud)

或者只是添加到列表中

 results <- list()

 ## Step A calculations
 results[[A]] <- results.from.A

 ## Step B calculations

 results[[B]] <- results.from.B

 ##At the end of script
 print(xtable(as.data.frame(results)))
Run Code Online (Sandbox Code Playgroud)

哪种方法或其他方法更受青睐?

coding-style r

3
推荐指数
1
解决办法
1518
查看次数

当目录包含大量无关联文件时,如何提高R CMD构建的速度?

我在目录〜/ package中有一个R包; 我还保留了在〜/ package/out目录中使用包的输出.当〜/ package/out的内容变得非常大时,构建这个包需要几分钟而不是几秒钟.有没有办法让"R CMD构建包"忽略〜/ package/out目录?

performance packages r build

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

如何将R脚本提交给作业调度程序:bash,compiler,Rscript或其他?

我的问题:

我有一个myscript.R使用配置文件的R脚本,例如config.xml,将这样的脚本提交给作业调度程序的最佳方法是什么(例如,使用qsub)?

我希望能够以与我使用相同的方式使用脚本和文件,例如嵌入在bash脚本中的C或Fortran可执行文件.

我目前如何使用FORTRAN:

下面是我使用编译的Fortran可执行文件的方法的示例,fex如下所示我将调用fscript.sh:

!#/bin/bash/
mpirun [arguments] "fex" -f $1
Run Code Online (Sandbox Code Playgroud)

以上内容fscript.sh可以发送到集群,其中包含读取配置文件的说明,如下所示:

qsub [arguments] fscript.sh 1 config.xml
Run Code Online (Sandbox Code Playgroud)

我目前如何以类似的方式使用R:

要以类似的方式运行R,我使用的是bash脚本 rscript.sh

#!/bin/bash
CONFIG=$1
env $CONFIG R --vanilla < myscript.R
Run Code Online (Sandbox Code Playgroud)

这可以在命令行运行,例如

qsub [arguments] rscript.sh config.xml
Run Code Online (Sandbox Code Playgroud)

哪里rscript.R包含类似的东西

library(XML)
config <- Sys.getenv("CONFIG")
config <- xmlList(xmlParse(config.xml))
myfunction(config)
Run Code Online (Sandbox Code Playgroud)

我的问题

  1. Rscript或编译器会提供比我目前使用的bash更强大的方法吗?
  2. 在哪种情况下哪一种比另一种更合适(利弊是什么)?
  3. 在这两种情况下,我如何传递配置文件?

到目前为止我做了什么

除了提出rscript.sh上面描述的bash脚本之外,我还阅读了教程和一些文档Rscript以及编译器,但我不清楚这些是否是一个优先于另一个的上下文.此外,还不清楚在任一上下文中传递配置文件的最佳方法.

这个问题与其他问题有关,例如,从R程序创建可执行文件的方法是什么,R编译器是否存在?.但是,我不认为使用编译代码是必不可少的.

compiler-construction r rscript

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