我有一个大文本文件,每行有可变数量的字段.每行中的第一个条目对应于生物学途径,并且每个后续条目对应于该途径中的基因.前几行可能看起来像这样
path1 gene1 gene2
path2 gene3 gene4 gene5 gene6
path3 gene7 gene8 gene9
Run Code Online (Sandbox Code Playgroud)
我需要将此文件作为列表读入R中,每个元素都是一个字符向量,列表中每个元素的名称是该行的第一个元素,例如:
> pathways <- list(
+ path1=c("gene1","gene2"),
+ path2=c("gene3","gene4","gene5","gene6"),
+ path3=c("gene7","gene8","gene9")
+ )
>
> str(pathways)
List of 3
$ path1: chr [1:2] "gene1" "gene2"
$ path2: chr [1:4] "gene3" "gene4" "gene5" "gene6"
$ path3: chr [1:3] "gene7" "gene8" "gene9"
>
> str(pathways$path1)
chr [1:2] "gene1" "gene2"
>
> print(pathways)
$path1
[1] "gene1" "gene2"
$path2
[1] "gene3" "gene4" "gene5" "gene6"
$path3
[1] "gene7" "gene8" "gene9"
Run Code Online (Sandbox Code Playgroud)
...但我需要自动完成数千行.我之前在这里 …
假设我有四个样本:id = 1,2,3和4,每个样本都有一个或多个测量值:
> a <- data.frame(id=c(1,1,2,2,3,4), value=c(1,2,3,-4,-5,6))
> a
id value
1 1 1
2 1 2
3 2 3
4 2 -4
5 3 -5
6 4 6
Run Code Online (Sandbox Code Playgroud)
我想删除重复项,每个ID只保留一个条目 - 具有"value"列绝对值最大的条目.即,这就是我想要的:
> a[c(2,4,5,6), ]
id value
2 1 2
4 2 -4
5 3 -5
6 4 6
Run Code Online (Sandbox Code Playgroud)
我怎么能在R中这样做?
我想加入两个数据帧,如果seed在数据帧列y是对部分匹配string列x.这个例子应该说明:
# What I have
x <- data.frame(idX=1:3, string=c("Motorcycle", "TractorTrailer", "Sailboat"))
y <- data_frame(idY=letters[1:3], seed=c("ractor", "otorcy", "irplan"))
x
idX string
1 1 Motorcycle
2 2 TractorTrailer
3 3 Sailboat
y
Source: local data frame [3 x 2]
idY seed
(chr) (chr)
1 a ractor
2 b otorcy
3 c irplan
# What I want
want <- data.frame(idX=c(1,2), idY=c("b", "a"), string=c("Motorcycle", "TractorTrailer"), seed=c("otorcy", "ractor"))
want
idX idY string seed
1 1 b Motorcycle …Run Code Online (Sandbox Code Playgroud) 我正在尝试做类似于这里所回答的事情,这让我有80%的路要走.我有一个带有一个ID列和多个信息列的数据框.我想汇总所有其他列,以便每个ID只有一行,并且多个条目由例如分号分隔.这是我拥有的和我想要的一个例子.
有:
ID info1 info2
1 id101 one first
2 id102 twoA second alias A
3 id102 twoB second alias B
4 id103 threeA third alias A
5 id103 threeB third alias B
6 id104 four fourth
7 id105 five fifth
Run Code Online (Sandbox Code Playgroud)
想:
ID info1 info2
1 id101 one first
2 id102 twoA; twoB second alias A; second alias B
3 id103 threeA; threeB third alias A; third alias B
4 id104 four fourth
5 id105 five …Run Code Online (Sandbox Code Playgroud) 我想演示如何编写RMarkdown,其中所述RMarkdown演示嵌入在用于创建课程材料的RMarkdown文档中.在这个有围栏的代码块中,我不希望knitr执行这个块.
我想把这样的东西放到我的"顶级"Rmarkdown文档中,并且让外部栅栏之间的所有内容在输出HTML文档中以固定宽度逐字打印,而不是让knitr评估内部嵌入的R代码块和内联代码.
```
---
title: "RMarkdown teaching demo"
author: "whoever"
---
# Major heading
Here's some text in your RMarkdown document. Here's a code chunk:
```{r, eval=FALSE}
head(mtcars)
```
Now we're back into regular markdown in our embedded document.
Here's inline code that I don't want executed either;
e.g. mean of mpg is `r mean(mtcars$mpg)`.
```
Run Code Online (Sandbox Code Playgroud)
我在knitr示例65中尝试过零宽度空间技巧,但是在尝试编译为PDF时失败(我需要HTML和PDF).
我需要使用Cygwin中的unix paste实用程序将几百GB的数据粘贴在一起,但如果文件中有Windows EOL字符,它将无法正常工作.数据可能有也可能没有Windows EOL字符,如果不需要,我不想花时间运行dos2unix.
所以我的问题是,在Cygwin中,我怎么能弄清楚这些文件是否有Windows EOL CRLF字符?
我已经尝试创建一些测试数据并运行
sed -r 's/\r\n//' testdata.txt
Run Code Online (Sandbox Code Playgroud)
但无论dos2unix是否已运行,这似乎都匹配.
谢谢.
我有一个看起来像这样的文本文件:
gene1 gene2 gene3
a d c
b e d
c f g
d g
h
i
Run Code Online (Sandbox Code Playgroud)
(每列都是一个人类基因,每个都包含可变数量的蛋白质(字符串,这里显示为字母),可以与这些基因结合).
我想要做的是计算每个字符串表示的列数,输出该数字和所有列标题,如下所示:
a 1 gene1
b 1 gene1
c 2 gene1 gene3
d 3 gene1 gene2 gene3
e 1 gene2
f 1 gene2
g 2 gene2 gene3
h 1 gene2
i 1 gene2
Run Code Online (Sandbox Code Playgroud)
我一直试图弄清楚如何在Perl和R中做到这一点,但到目前为止还没有成功.谢谢你的帮助.
我正在使用knitr从Rmd创建一个markdown文件,我在.Rmd脚本的顶部设置了以下选项来隐藏所有结果和图:
```{r, echo=FALSE}
opts_chunk$set(results="hide", fig.show="hide")
```
Run Code Online (Sandbox Code Playgroud)
当我点击RStudio中的Knit HTML按钮时,这是有效的 - 我得到没有结果和数字的输出.但是,如果我从命令行运行:
Rscript -e 'knitr::knit("myfile.Rmd")'
Run Code Online (Sandbox Code Playgroud)
它似乎opts_chunk$set()没有读取行,我在.md输出中得到结果和图.我通过在Rscript命令中指定这些选项来解决这个问题:
Rscript -e 'library(knitr); opts_chunk$set(results="hide", fig.show="hide"); knit("myfile.Rmd")'
Run Code Online (Sandbox Code Playgroud)
但我宁愿保留从我正在使用的文件中读取的所有选项,而不是在命令行中指定.knit在命令行中使用Rscript 时如何获取.Rmd文件中读取的选项?
谢谢.
简单的问题,我希望.我想编写一个绘图函数,如果用户没有指定,则该函数具有y轴标签的默认值.我还想允许...其他绘图参数的参数,并允许用户ylab手动设置.但我无法弄清楚如何做到这一点.
# simple scatterplot function with a default ylab
scatter <- function(x,y, ...) {
plot(x, y, ylab="Default y-axis label", ...)
}
# generate data
x <- rnorm(100)
y <- x+rnorm(100)
# use the default
scatter(x,y)
# here I want to use my own label, but I get an error!
scatter(x, y, ylab="New y-axis label")
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
Error in plot.default(x, y, ylab = "Default y-axis label", ...) :
formal argument "ylab" matched by multiple actual arguments
Run Code Online (Sandbox Code Playgroud)
我理解这个问题,但我不知道修复它的最佳方法.谢谢您的帮助!
编辑: …
我有一个以空格分隔的文件,每行有一个可变数量的条目.我想用逗号替换前两个空格来创建一个包含三列的逗号分隔文件.
这是我的意见:
a b 1 2 3 3 2 1
c d 44 55 66 2355
line http://google.com 100 200 300
ef jh 77 88 99
z y 2 3 33
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出:
a,b,1 2 3 3 2 1
c,d,44 55 66 2355
line,http://google.com,100 200 300
ef,jh,77 88 99
z,y,2 3 33
Run Code Online (Sandbox Code Playgroud)
我正在尝试在sed命令中使用perl正则表达式,但我无法让它工作.首先我尝试捕获一个单词,然后是空格,然后是另一个单词,但这仅适用于第1,2和5行:
$ cat test | sed -r 's/(\w)\s+(\w)\s+/\1,\2,/'
a,b,1 2 3 3 2 1
c,d,44 55 66 2355
line http://google.com 100 200 300
ef jh 77 88 99
z,y,2 …Run Code Online (Sandbox Code Playgroud)