我想做的是采用这个矩阵:
> partb
0.5 1.5 1a 1b -2 -3
A1FCLYRBAB430F 0.26 0.00 0.74 0.00 0.00 0.00
A1SO604B523Q68 0.67 0.33 0.00 0.00 0.00 0.00
A386SQL39RBV7G 0.00 0.33 0.33 0.33 0.00 0.00
A3GTXOXRSE74WD 0.41 0.00 0.08 0.03 0.05 0.44
A3OOD9IMOHPPFQ 0.00 0.00 0.33 0.00 0.33 0.33
A8AZ39QM2A9SO 0.13 0.54 0.18 0.13 0.00 0.03
Run Code Online (Sandbox Code Playgroud)
然后制作一个热图,其中包含现在有色单元格中的每个值.
制作热图很容易:
> heatmap( partb, Rowv=NA, Colv=NA, col = heat.colors(256), margins=c(5,10))
Run Code Online (Sandbox Code Playgroud)
但是对于我的生活,我无法弄清楚如何将价值放在每个细胞中.
我错过了什么?当然这是常见的事情.
有显然是为了整合两种方式testthat使用R CMD check.我无法上班.
根据devtools维基:
在开发包时,将测试放在inst/tests中,然后创建一个文件tests/run-all.R(注意它必须是大写R),其中包含以下代码:
library(testthat)
library(mypackage)
test_package("mypackage")
Run Code Online (Sandbox Code Playgroud)
这将评估您在包命名空间中的测试(因此您可以测试非导出的函数),如果有任何测试失败,它将抛出错误.这意味着您将看到测试失败的完整报告,并且除非所有测试都通过,否则R CMD检查将不会通过.
整个包裹都在这里.它是两个文件:
## minimalbugexample/inst/tests/run-all.R
library(testthat)
library(minimalbugexample)
test_package('minimalbugexample')
Run Code Online (Sandbox Code Playgroud)
和
## minimalbugexample/inst/tests/test-use-Matrix-package.R
context("Intentional break")
expect_that( TRUE, equals(FALSE))
Run Code Online (Sandbox Code Playgroud)
我的描述是
Package: minimalbugexample
Title:
Description:
Version: 0.1.1
Author: Nathan VanHoudnos <nathanvan@letterafterFmail.com>
Maintainer: Nathan VanHoudnos <nathanvan@letterafterFmail.com>
Depends:
R (>= 3.0.1),
Matrix (>= 1.0)
Suggests:
testthat
License: GPL
LazyData: true
Collate:
'minimalbugexample-package.r'
'use-Matrix-package.R'
Run Code Online (Sandbox Code Playgroud)
安装软件包后,我可以正常运行测试(它们会失败,如预期的那样).
> test_package('minimalbugexample')
Intentional break : 1
1. Failure: -------------------------------------------------------------------
TRUE not equal to FALSE …Run Code Online (Sandbox Code Playgroud) R忽略.Random.seed了lapply里面的设置.set.seed然而,使用工作正常.
一些代码:
# I can save the state of the RNG for a few seeds
seed.list <- lapply( 1:5, function(x) {
set.seed(x)
seed.state <- .Random.seed
print( rnorm(1) )
return( seed.state )})
#[1] -0.6264538
#[1] -0.8969145
#[1] -0.9619334
# But I get different numbers if I try to restore
# the state of the RNG inside of an lapply
tmp.rest.state <- lapply(1:5, function(x) {
.Random.seed <- seed.list[[x]]
print(rnorm(1))})
# [1] -0.2925257
# [1] 0.2587882
# [1] -1.152132 …Run Code Online (Sandbox Code Playgroud) 这里有两件事:(1)我正在学习如何使用Rcpp和朋友来更快地制作我的R代码;(2)我之前从未构建过R包.
我已经使用了inlinedown.很棒的套餐.爱它.但是,我似乎无法使用inlinewith 开发的任何代码package.skeleton来制作R包.
这是一个最小的例子:
#############################
# File : build-R-pacakge.R #
#############################
require(inline)
require(Rcpp)
require(RcppArmadillo)
# Define a simple cxxfunction
plus.two.cpp.src <- '
arma::mat U = Rcpp::as<arma::mat>(UmatrixR);
return(Rcpp::wrap(U+2));
'
plus.two.cpp <- cxxfunction(
signature(UmatrixR="numeric"),
body=plus.two.cpp.src,
plugin="RcppArmadillo")
# Define the analogous R function
plus.two.r <- function( x ) {
return( x + 2 )
}
Run Code Online (Sandbox Code Playgroud)
在新的R会话运行中:
source('build-R-package.R')
RcppArmadillo.package.skeleton(name='inlineExample',
list=c('plus.two.cpp', 'plus.two.r'),
code_files='build-R-package.R')
Run Code Online (Sandbox Code Playgroud)
然后删除man/*.Rd文件,因为R没有放入"正常工作"的默认值.
$ rm inlineExample/man/*.Rd
Run Code Online (Sandbox Code Playgroud)
并运行:
$ R CMD build inlineExample/
<< snip …Run Code Online (Sandbox Code Playgroud) 考虑R会话中定义的以下简单函数:
nathanvan@nathanvan-N61Jq:~$ R
R version 3.0.1 (2013-05-16) -- "Good Sport"
... snip ...
> make.a.Matrix <- function(data, nrow, ncol) {
+ require(Matrix)
+ return( Matrix(data, nrow=nrow, ncol=ncol))
+ }
>
> transpose.a.Matrix <- function(data, nrow, ncol ) {
+ return(t( make.a.Matrix(data, nrow=nrow, ncol=ncol) ))
+ }
>
> make.a.Matrix(1:12, 3, 4)
Loading required package: Matrix
Loading required package: lattice
3 x 4 Matrix of class "dgeMatrix"
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11 …Run Code Online (Sandbox Code Playgroud) 我有一个带有重叠阴影置信区间的图,如下所示:

我非常希望用置信区间的颜色来标注这个图例.就像是:

除了,我想要两件事:
(我使用基本R而不是ggplot2是出于某些特定于此应用程序的原因而无法解释的.)
这是一个重现图例的代码示例:
#Build a fake plot so that legend has somewhere to sit
xx <- seq(0,10,by=.1)
yy <- 2*xx + rnorm(length(xx),0,1)
plot(xx,yy)
#Build the legend
estNames <- c('est1','est2','est3')
legend('bottomright',
c("no box, no point","no box, no point",estNames) ,
lty=c(rep('dotted',2),rep('solid',3)),
col=c('black','red',1,2,4),
pch=c(-1,-1,rep(16,3)),
lwd=1,
fill=c( 0, 0,
rep( c( rgb(0.5,0.5,0.1,0.25),
rgb(0.5,0.1,0.1,0.25),
rgb(0.1,0.1,0.5,0.25)), 2)),
inset=0,bg='white')
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.谢谢!
我要这个:

而且我认为传递na.action=na.pass给boxplot会让NA出现在分组名称中.以下是一些示例代码:
#Build a fake dataset
set.seed(212012)
nn = 100
sample_data <- data.frame( score = c( rpois(nn, 1), rpois(nn, 2),
rpois(nn, 1.5), rpois(nn, 3)),
category = c( rep(0, nn), rep(1, nn),
rep(2, nn), rep(NA, nn) ))
boxplot( score ~ category, data=sample_data, na.action=na.pass )
Run Code Online (Sandbox Code Playgroud)
但这产生了这个:

获得我想要的"简单"方法是以下代码,但它对于探索性数据分析并不好:
sample_data$category2 <- sample_data$category
sample_data$category2[ is.na(sample_data$category) ] <- 'NA'
boxplot( score ~ category2, data=sample_data )
Run Code Online (Sandbox Code Playgroud)
来自R Guru的任何暗示?我能够从这个更一般的讨论中找到关于na.pass的内容,以及来自Ripley教授的na.pass的起源.但是,数据中出现的缺失数据(NA)与因子本身的缺失数据之间似乎没有区别.我错过了一些简单的东西,还是这更像是一个功能请求?
这是参考这个问题.
我想重命名一个大数据框中的列子集.我希望下面的代码来重命名列X4,X5,X6和X7以gradek,grade1,grade2,和grade3分别为:
set.seed(1)
in.df <- data.frame( matrix( rnorm(60), ncol=10) )
names(in.df) <- ifelse( names(in.df) %in% c('X4', 'X5', 'X6', 'X7'),
paste('grade', c('k',1:3), sep=''),
names(in.df) )
Run Code Online (Sandbox Code Playgroud)
然而,
> names(in.df)
[1] "X1" "X2" "X3" "grade3" "gradek" "grade1" "grade2" "X8"
[9] "X9" "X10"
Run Code Online (Sandbox Code Playgroud)
即使
> paste('grade', c('k',1:3), sep='')
[1] "gradek" "grade1" "grade2" "grade3"
Run Code Online (Sandbox Code Playgroud)
显示订单未保留.这个线程,建议使用match而不是%in%工作,但在这种情况下它不会.(也许在其他版本的R中也是如此.在我安装的版本(2.15.3)中,帮助页面match建议%in%通过match这样定义,因此将其切换起来没有任何帮助.) …
我希望将输出print(df.to.print)打印在绘图上.如果我可以在"传奇"(...)的调用中放置topleft或topright喜欢这个位置会很棒,但这只是一个奖励.
一些代码:
# A data.frame to play with
df.to.print <- structure(list(p.val = c(0.05, 0.1), self = c(0.0498, 0.0997),
H2007.REML = c(0, 0.01), H2007.ref = c(0, 0)), .Names = c("p.val",
"self", "H2007.REML", "H2007.ref"), row.names = c(NA, -2L), class = "data.frame")
# A simple plot
plot(1)
text(1,1, df.to.print )
# All of the entries are overlapping
# I can insert newlines easily enough
plot(1)
text(1,1, paste(as.character(df.to.print), collapse='\n'))
# But that looses all of the nice formatting …Run Code Online (Sandbox Code Playgroud) 我必须承认data.table j语法让我困惑.
我正在尝试使用data.table FAQ的1.4节中描述的list()提取a的子集data.table作为data.table对象,但我无法在函数内部使用此行为.
一个例子:
require(data.table)
## Setup some test data
set.seed(1)
test.data <- data.table( X = rnorm(10),
Y = rnorm(10),
Z = rnorm(10) )
setkey(test.data, X)
## Notice that I can subset the data table easily with literal names
test.data[, list(X,Y)]
## X Y
## 1: -0.8356286 -0.62124058
## 2: -0.8204684 -0.04493361
## 3: -0.6264538 1.51178117
## 4: -0.3053884 0.59390132
## 5: 0.1836433 0.38984324
## 6: 0.3295078 1.12493092
## …Run Code Online (Sandbox Code Playgroud)