假设我有一个看起来像这样的数据框
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.然后我想在后台获得生成该均值和标准误的实际原始数据点.结果图将如下所示:

我自己编写了这个,但它需要多个自定义函数(用于生成标准错误,组方法),以及向数据框添加一些内容以生成抖动并绕过一些图形打嗝.代码将复制到此处并生成所有必需的数据:
##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) 假设我在数据框中有一些数据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) 生成一些例子 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条目.
我有一个看起来像这样的字符向量
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)
这仍然没有用。
我有一些看起来像这样的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)
从第二行开始,我只想申请其他每一行.
我通常使用 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) 我有一个如下所示的数据框:
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)
我想要写一个简短的功能或一个班轮将返回如该行中的所有值(在这种情况下的值的行的行名a和b)是所有小于该值1.1.仅在具有行名称的此数据框的最后一行中满足此条件1112.注意,解决方案必须概括,以便它可以在可能更多的列上运行,并且可以在具有更多行的数据帧上运行.
假设我在图中绘制了一些变量,并将图中点的颜色链接到其他一些变量。这很容易做到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(具有适当格式的上标)。添加此内容最直接的方法是什么?
我有一个如下所示的数据框:
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)