我在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)
data$site应该是c(1,1,1,2,3,3,4,4)。data$trt应该是c(1,0,1,0,1,0,0,1)。如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) 我正在尝试使用该功能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次点击,其中两次对这个问题.
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) 我创建一个newpackage取决于oldpackage,并表示在文件中这种依赖关系newpackage/DESCRIPTION.
此外,
oldpackage安装在目录中,~/lib/R
我的.Rprofile包括.libPaths("~/lib/R")
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) 我想编写一个脚本,在新的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 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) 我有本地脚本,我想在远程服务器上运行.我已经设置了ssh密钥对来启用没有密码的登录.
我目前的方法是将脚本rsync到服务器然后运行它:
ssh user@remoteserver "rsync localserver:script.sh ./; ./script.sh; rm script.sh"
Run Code Online (Sandbox Code Playgroud)
然而,这似乎是一个黑客; 是否有更友好的方式来做到这一点?
更新:既然有这么多好的答案,任何人都可以通过提供理由帮助我选择"最好的"吗?
这是一个示例数据集:
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中这样做吗?
谢谢!
我正在编写一个不断更新数据帧的脚本:
## 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)
哪种方法或其他方法更受青睐?
我在目录〜/ package中有一个R包; 我还保留了在〜/ package/out目录中使用包的输出.当〜/ package/out的内容变得非常大时,构建这个包需要几分钟而不是几秒钟.有没有办法让"R CMD构建包"忽略〜/ package/out目录?
我有一个myscript.R使用配置文件的R脚本,例如config.xml,将这样的脚本提交给作业调度程序的最佳方法是什么(例如,使用qsub)?
我希望能够以与我使用相同的方式使用脚本和文件,例如嵌入在bash脚本中的C或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,我使用的是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)
除了提出rscript.sh上面描述的bash脚本之外,我还阅读了教程和一些文档Rscript以及编译器,但我不清楚这些是否是一个优先于另一个的上下文.此外,还不清楚在任一上下文中传递配置文件的最佳方法.
这个问题与其他问题有关,例如,从R程序创建可执行文件的方法是什么,R编译器是否存在?.但是,我不认为使用编译代码是必不可少的.
r ×9
bash ×2
package ×2
packages ×2
text ×2
build ×1
coding-style ×1
compilation ×1
performance ×1
rscript ×1
shell ×1
ssh ×1
ubuntu ×1