小编col*_*lin的帖子

按特定样本前缀对列名向量进行子集化

假设我有一个看起来像这样的数据框

ca01<- c(1:10)
ca02<- c(2:11)
ca03<- c(3:12)
stuff.1<- rep('test',10)
other<- rep(9,10)

data<- data.frame(ca01,ca02,ca03,stuff.1,other)
Run Code Online (Sandbox Code Playgroud)

然后我创建一个包含列名的向量

samps<- colnames(data)
Run Code Online (Sandbox Code Playgroud)

然后我想过滤这个向量以只包含以前缀“ca”开头的项目。我不想通过编写专门删除这些的单独代码行来排除 stuff.1 和其他,所以像

samps<-samps[samps!='stuff.1']
samps<-samps[samps!='other']
Run Code Online (Sandbox Code Playgroud)

不会合适。

r

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

绘制方法,错误,然后背景中的原始数据 - 更简单的代码?

我想绘制连续变量的均值和标准误差,按照分类中的一个进行分组R.然后我想在后台获得生成该均值和标准误的实际原始数据点.结果图将如下所示:

在此输入图像描述

我自己编写了这个,但它需要多个自定义函数(用于生成标准错误,组方法),以及向数据框添加一些内容以生成抖动并绕过一些图形打嗝.代码将复制到此处并生成所有必需的数据:

##generate some fake data###
ctrl<- rnorm(20,1,0.5)
treated<- rnorm(20,2,0.5)
ctrl.lab<- rep('ctrl',20)
treated.lab<- rep('treated',20)
#adding 1s and 2s that correspond to treatment for plotting later. The niormal distribution allows me to jitter the points along the y-axis
ctrl.alt<- rnorm(20,1,0.02) 
treated.alt<- rnorm(20,2,0.02)
alt<-c(ctrl.alt,treated.alt) later
lab<-c(ctrl.lab,treated.lab)
response<- c(ctrl,treated)

data<-data.frame(lab,response,alt)

#make a function for plotting error bars
errb <- function (x, y, ebl, ebu = ebl, length = 0.06, ...){
  arrows(x, y + ebu, x, y - ebl, angle = 90, …
Run Code Online (Sandbox Code Playgroud)

plot r

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

用向量计算替换函数中的循环以加速R

假设我在数据框中有一些数据d1,它描述了不同样本个体吃不同食物的频率,以及描述这些食物是否凉爽的最后一栏.数据结构如下.

OTU.ID<- c('pizza','taco','pizza.taco','dirt')
s1<-c(5,20,14,70)
s2<-c(99,2,29,5)
s3<-c(44,44,33,22)
cool<-c(1,1,1,0)

d1<-data.frame(OTU.ID,s1,s2,s3,cool)
print(d1)
      OTU.ID s1 s2 s3 cool
1      pizza  5 99 44    1
2       taco 20  2 44    1
3 pizza.taco 14 29 33    1
4       dirt 70  5 22    0
Run Code Online (Sandbox Code Playgroud)

我写了一个函数,对于每个样本,s1:s3消耗的凉爽食物的数量,以及消耗的食物总数.它在数据表的每一行上作为for循环运行(这非常慢).

cool.food.abundance<- function(food.table){
samps<-colnames(food.table)
#remove column names that are not sample names
samps<-samps[!samps %in% c("OTU.ID","cool")]

#create output vectors for for loop
    id<-c()
    cool.foods<-c()
    all.foods<-c()
    #run a loop that stores output ids and results as vectors
    for(i in 1:length(samps)){ …
Run Code Online (Sandbox Code Playgroud)

r

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

在多个向量之间聚合,保留仅具有特定向量的NA的条目

生成一些例子 data

site<- c(12,12,12,12,45,45,45,45)
horizon<-c('A','A','B','C','A','A','B','C')
value1<- c(19,14,3,2,18,19,4,5)
value2<- c(NA,NA,3,2,NA,NA,4,5)
data<-data.frame(site,horizon,value1,value2)
Run Code Online (Sandbox Code Playgroud)

假设我使用聚合函数按站点和地平线汇总值1

aggregate(value1~site+horizon,data=data,FUN=mean)
Run Code Online (Sandbox Code Playgroud)

R版画:

  site horizon value
1   12       A  16.5
2   45       A  18.5
3   12       B   3.0
4   45       B   4.0
5   12       C   2.0
6   45       C   5.0
Run Code Online (Sandbox Code Playgroud)

但是,如果我通过两个向量进行聚合,那么它会删除所有A视野,因为它们没有数据 value2

aggregate(.~site + horizon,data=data,FUN=mean)
  site horizon value1 value2
1   12       B      3      3
2   45       B      4      4
3   12       C      2      2
4   45       C      5      5
Run Code Online (Sandbox Code Playgroud)

我希望这会从我的第一次聚合调用生成输出,其中一个附加列value2具有A视野的NA条目.

r

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

在 R 中将字符向量粘贴为逗号分隔的未加引号的列表

我有一个看起来像这样的字符向量

vector <- c('a','b','c','d','e')
Run Code Online (Sandbox Code Playgroud)

我在 for 循环中有一个对象,它将输入作为:

out[a,] <- c(a,b,c,d,e)
Run Code Online (Sandbox Code Playgroud)

a-e带值的变量在哪里(例如,a=0.7)。我想为out对象提供一些对象的转换版本vector。我试过了

paste(noquote(vector),collapse=',')
Run Code Online (Sandbox Code Playgroud)

然而,这只是返回

"a,b,c,d,e"
Run Code Online (Sandbox Code Playgroud)

这仍然没有用。

r

3
推荐指数
2
解决办法
2966
查看次数

从文件中的每个其他行中删除前15个字符

我有一些看起来像这样的txt文件(它们包含DNA序列和样本代码):

>SRR1502445.1
GACTACACGTAGTATACGAGTGCGTTCCTGCGCTTATTGATATGCTTAAGTTCAGCGGGTAGTCTCACCCGATTTGAGGTCAAGGTTTGTGGGTCGAGTCACAACTCGAACATCGTCTTTGTACAAAGACGGTTGGAAGCGGGTTCCAAGGCAACACAGGGGGATAGGNNNNNNNNNNNNNNNNNNNNNNN
>SRR1502445.2
GACTACACGTAGTATACGAGTGCGTTCCTGCGCTTATTGATATGCTTAAGTTCAGCGGGTAGTCTCACCCGATTTGAGGTCAAGGTTTGTGGGTCGAGTCACAACTCGAACATCGTCTTTGTACAAGACGGTTGGAAGCGGGTTCCAAGGCACACAGGGGATAGGNNN
>SRR1502445.3
GACTACACGTAGTATACGAGTGCGTTCCTGCGCTTATTGATATGCTTAAGTTCAGCGGGTAGTCTCACCCGATTTGAGGTCAAGGTTTGTGGGTCGAGTCACAACTCGAACATCGTCTTTGTACAAAGACGGTTGGAAGCGGGTTCCAAGGCACACAGGGGATAGGNNN
>SRR1502445.4
GACTACACGTAGTATACGAGTGCGTTCCTGCGCTTATTGATATGCTTAAGTTCAGCGGGTAGTCTCACCCGATTTGAGGTCAAGGTTTGTGGGTCGAGTCACAACTCGAACATCGTCTTTGTACAAAGACGGTTGGAAGCGGGTTCCAAGGCACACAGGGGATAGGNNNNNNNNNNN
Run Code Online (Sandbox Code Playgroud)

我想删除文件中每隔一行的前15个字符.这将从GACTACACGTAGTAT第二行,第四行,第六行,第八行(等)中删除字符串.

例如,cut命令可以删除每行的前15个字符:

cut -c 1-15 /path/to/file.txt
Run Code Online (Sandbox Code Playgroud)

从第二行开始,我只想申请其他每一行.

unix bash terminal bioinformatics qiime

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

R 中的光栅包无法识别 .bil 文件

我通常使用 Rraster中的包将 .bil 文件加载到 R 中,如下所示:

require(raster)
require(rgdal)

my.layer<- raster('path/to/file.bil')
Run Code Online (Sandbox Code Playgroud)

这段通用代码在我的一台计算机上运行得很好。但是,当在我的集群上运行它时,我收到错误:

Error in .local(.Object, ...) : 
  `/path/to/file.bil' not recognised as a supported file format.


Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",  : 
  Cannot create a RasterLayer object from this file.
Run Code Online (Sandbox Code Playgroud)

我不明白这里出了什么问题。在我的另一台计算机上加载正常的多个光栅文件上出现同样的错误。我正在运行 R 版本 3.1.2 和以下软件包版本:

rgdal_0.8-16     raster_2.2-31    sp_1.0-15
Run Code Online (Sandbox Code Playgroud)

r raster r-raster

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

提取行名称,基于行中小于特定值的所有元素

我有一个如下所示的数据框:

a <- c(1.2,1.19,1.1,1.09,1.09)
b <- c(1.2, 1.18,1.12,1.11, 1.09)
d<- data.frame(a,b)
rownames(d) <- c('450','500','899','1004','1112')

        a    b
450  1.20 1.20
500  1.19 1.18
899  1.10 1.12
1004 1.09 1.11
1112 1.09 1.09
Run Code Online (Sandbox Code Playgroud)

我想要写一个简短的功能或一个班轮将返回如该行中的所有值(在这种情况下的值的行的行名ab)是所有小于该值1.1.仅在具有行名称的此数据框的最后一行中满足此条件1112.注意,解决方案必须概括,以便它可以在可能更多的列上运行,并且可以在具有更多行的数据帧上运行.

r

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

将单位标签添加到 ggplot2 中的颜色渐变图例

假设我在图中绘制了一些变量,并将图中点的颜色链接到其他一些变量。这很容易做到ggplot2并生成下图:

require(ggplot2)
miss <- sample(c(NA, 1:5), nrow(mtcars), rep = TRUE)
qplot(mpg, wt, data = mtcars, colour = miss) +
  scale_colour_gradient(na.value = "black")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然而,我希望“小姐”传说有单位。具体来说,我希望这些单位是瓦特米^-2小时^-1(具有适当格式的上标)。添加此内容最直接的方法是什么?

plot r ggplot2

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

过滤R数据帧以仅包含两个字符串之间的空格

我有一个如下所示的数据框:

v1 <- c('abies balsamifera','some trees','pizza','i like tacos','pinus taeda')
v2 <- c(1,2,3,4,5)
data <- data.frame(v1,v2)
                 v1 v2
1 abies balsamifera  1
2        some trees  2
3             pizza  3
4      i like tacos  4
5       pinus taeda  5
Run Code Online (Sandbox Code Playgroud)

我想对数据帧进行子集化,只包括字符串中v1有两个单词用空格分隔的行.我想排除只有一个单词的行,或其他包含三个单词的行.结果数据框如下所示:

                 v1 v2
1 abies balsamifera  1
2        some trees  2
5       pinus taeda  5
Run Code Online (Sandbox Code Playgroud)

r

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

标签 统计

r ×9

plot ×2

bash ×1

bioinformatics ×1

ggplot2 ×1

qiime ×1

r-raster ×1

raster ×1

terminal ×1

unix ×1