我有一个包含Ensembl ID的data.frame在一列中; 我想为该列的值找到相应的基因符号,并将它们添加到我的数据框中的新列.我使用bioMaRt但它找不到任何Ensembl ID!
这是我的示例数据(df[1:2,]):
row.names organism gene
41 Homo-Sapiens ENSP00000335357
115 Homo-Sapiens ENSP00000227378
Run Code Online (Sandbox Code Playgroud)
我希望得到这样的东西
row.names organism gene id
41 Homo-Sapiens ENSP00000335357 CDKN3
115 Homo-Sapiens ENSP00000227378 HSPA8
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
library('biomaRt')
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
genes <- df$genes
df$id <- NA
G_list <- getBM(filters= "ensembl_gene_id", attributes= c("ensembl_gene_id",
"entrezgene", "description"),values=genes,mart= mart)
Run Code Online (Sandbox Code Playgroud)
然后,当我检查G_list时,我得到了这个
[1] ensembl_gene_id entrezgene description <0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)
所以我无法将G_list添加到我的df中!因为没有什么可补充的!
提前致谢,
我有一个tar.gz文件,我是由pigz(并行gzip)制作的.我想计算压缩文件中的文件数而不解压缩.
我用这个命令:
tar -tzf file.tar.gz
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
tar: This does not look like a tar archive
tar: Skipping to next header
Run Code Online (Sandbox Code Playgroud)
是因为我使用了pigz而不是gzip?如果是的话,我现在怎么算这些呢?
提前致谢.
我有一个关于在Bash中循环的问题我想运行特定范围的awk命令增加34但我不知道如何在for循环中指定两个变量.我知道如何为一个变量做这个,但它不适用于两个变量.这是我的一个变量的代码:
#!/bin/bash
for a in {1..3400..34}
do
printf "awk 'NR>=$a&&NR<=$b { if (/^[0-9]/) sum++} END {print "row\t", sum }' file "
done
Run Code Online (Sandbox Code Playgroud)
但我想指定两个变量($ a,$ b),这样的东西不起作用!:
for a in {1..3400..34} , for b in {35..3400..34}
do
printf "awk 'NR>=$a&&NR<=$b { if (/^[0-9]/) sum++} END {print "row\t", sum }' hydr_dE.txt && "
done
Run Code Online (Sandbox Code Playgroud)
谢谢,
在我的生存分析任务中,我使用了 cox 比例模型来计算数据集不同组中的一致性指数 (c-index) 值。我想知道如何将 p 值添加到我的 c-index 图以比较不同的组看起来像这个图?

这是我的代码:
surv <- with(group, Surv(group$survival, group$time))
# calculate survival
sum.surv_1 <- with(group, summary(coxph(surv ~ group$1)))
sum.surv.1_2 <- with(group, summary(coxph(surv ~ group$1 + group$2,ties = T)))
c_index.1 <- sum.surv_1$concordance
c_index.1_2 <- sum.surv.1_2$concordance
Comb_cIndex = data.frame(rbind(c_index.1["concordance.concordant"],
c_index.1_2["concordance.concordant"]))
barplot(as.matrix(Comb_cIndex), beside=TRUE, axis.lty=1,
ylab = "C Index", ylim = c(0, 0.8),
col = c("green", "blue"))
Run Code Online (Sandbox Code Playgroud)
提前致谢,
我在gplots库中使用了venn函数.
这是一个简单的例子.
library(gplots)
venn( list(A=1:5,B=4:6,C=c(4,8:10),D=c(4:12)) )
Run Code Online (Sandbox Code Playgroud)
这是输出:
我的问题是我怎样才能让这组照片变得丰富多彩?(基本上让它变得更加花哨!:D)
我已经尝试了另一个包但由于我的数据不是数字,他们不会接受字符来制作图表!
任何帮助/建议将不胜感激.提前致谢,
我有一个像这样的大型data.frame(df):
A B C D E
1.2 2.2 3.3 4.4 5.2
4.2 5.3 6.5 7.2 1.5
2 7 3 4 6
1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
我想通过在R中使用dplyr创建一个B列的三分位组,并使用以下代码:
第一
library('dplyr')
ntile(df$B, 3)
Run Code Online (Sandbox Code Playgroud)
所以我从B栏得到三组:
#group 1
ntile(df$B,3)==1
#group2
ntile(df$B,3)==2
#group3
ntile(df$B,3)==3
Run Code Online (Sandbox Code Playgroud)
现在我想通过将组1,2连接成一个组来生成二进制变量,并将组3连接成第二组.我申请了这段代码:
第二
#combine group1,2
bin1 <- c((ntile(df$B,3)==1),(ntile(df$B,3)==2))
#creating the second group
bin2 <- (ntile(df$B,3)==3)
Run Code Online (Sandbox Code Playgroud)
我只是想确定我是否做得对(第一和第二部分)?我想知道是否还有其他(更快/更容易)的方法吗?通过使用(dplyr或R中的任何其他包)
我有一个制表符分隔文件,我想在每次找到第一列的数字而不是第一列的字符时,将某个十进制数总和到输出(1.5),并打印出从第一列到最后一行的所有行的结果.
我有一个看起来像这样的示例文件:
它有8行
1st-column 2nd-Column
a ship
1 name
b school
c book
2 blah
e blah
3 ...
9 ...
Run Code Online (Sandbox Code Playgroud)
现在我希望我的脚本逐行读取,如果它找到数字总和1.5,并给我输出第一列,如下所示:
0
1.5
1.5
1.5
3
3
4.5
6
Run Code Online (Sandbox Code Playgroud)
我的脚本是:
#!/bin/bash
for c in {1..8}
do
awk 'NR==$c { if (/^[0-9]/) sum+=1.5} END {print sum }' file
done
Run Code Online (Sandbox Code Playgroud)
但我没有得到任何输出!
感谢您的帮助.
我有一个文件夹包含~30000个文件,其中一些是空的.我想找到它们并将'NON'作为空文件的标题.
我的脚本是:
find -type f -empty -exec echo 'NON' {} \;
Run Code Online (Sandbox Code Playgroud)
我的输出是:
NON ./file1
NON ./file2
NON ./file3
NON ./file4
Run Code Online (Sandbox Code Playgroud)
但是我想把'NON'写成file1,file2,file3和file4的标题.
提前致谢.