小编Mik*_*ike的帖子

如何停止提迪尔按字母顺序排列排序列

我在表“ SampleFileName”中有一个表“ inputdf”,表中的样品名称以随机顺序排列。

> colnames(inputdf)
 [1] "Dye/SamplePeak" "SampleFileName" "Marker"         "Allele"         "Size"           "Height"        
 [7] "Area"           "DataPoint"      "flank"          "correction"     "start"          "end"           
[13] "control"        "iithreshold"    "CAG"           
Run Code Online (Sandbox Code Playgroud)

我正在使用“高度”列中的tidyr传播结果分成单独的列,每列均由“ SampleFileName”中的值命名。

library(tidyr)
height <- spread(inputdf, key=SampleFileName, value=Height, fill = 0, convert = FALSE) #Extract heights into separate columns for each sample
Run Code Online (Sandbox Code Playgroud)

我的样本在“ SampleFileName”列中不是按字母顺序排列的,我想按此顺序排列。但是,spread会自动按字母顺序对它们进行排序。感谢您的帮助!

> colnames(height)
 [1] "Dye/SamplePeak"                         "Marker"                                
 [3] "Allele"                                 "Size"                                  
 [5] "Area"                                   "DataPoint"                             
 [7] "flank"                                  "correction"                            
 [9] "start"                                  "end"                                   
[11] "control"                                "iithreshold"                           
[13] "CAG"                                    "A01_MF20170522_FA_A01_2017-05-22_1.fsa"
[15] "A01_MF20170623_FA_A01_2017-06-23_1.fsa" "A02_MF20170623_FA_A02_2017-06-23_1.fsa"
[17] "A03_MF20170623_FA_A03_2017-06-23_1.fsa" "A05_MF20170623_FA_A05_2017-06-23_1.fsa"
[19] "A06_MF20170623_FA_A06_2017-06-23_1.fsa" "A07_MF20170623_FA_A07_2017-06-23_1.fsa"
[21] …
Run Code Online (Sandbox Code Playgroud)

r

8
推荐指数
1
解决办法
2622
查看次数

挑选出符合模式的峰

我得到了 x 轴上的时间(秒)和 y 轴上的强度(以相对荧光单位或 rfu 表示)的数据。它是通过观察 DNA 片段通过相机而生成的——DNA 片段越大,时间就越长。有 23 个已知大小的片段(以 DNA 碱基对单位 bp 为单位),因此应该有 23 个峰。由于我知道 DNA 片段的大小(以 bp 为单位),因此我想使用线性模型重新校准 x 轴,从时间(秒)到碱基对 (bp)。

不幸的是,数据中存在大量噪声,会产生虚假峰值。自信地区分真假的唯一方法是假碱基与 DNA 碱基对中的预期模式不符。

我已在此链接中的名为 demo 的数据框中提供了一个示例的数据。不幸的是它太大了,无法粘贴到下面。

https://1drv.ms/t/s!AvBi5ipmBYfrhf0v_kvWuN2foLyBgg?e=RWfdXZ

我可以如下选出所有峰值。

library(ggplot2)
library(ggpmisc)
ggplot(demo, aes(x=time, y=rfu)) +
geom_line(size=0.1) +
stat_peaks(col = "red", span=5, ignore_threshold=0.1) +
theme_bw()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然而,这些是预期的 DNA 片段大小(以 bp 为单位):

ladder <- c(50, 75, 100, 125, 150, 200, 250, 300, 350, 400, 450, 475, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000)
Run Code Online (Sandbox Code Playgroud)

这是一个选出了正确峰值的图:

在此输入图像描述

有没有办法让峰值查找器(例如 …

r ggplot2

6
推荐指数
1
解决办法
456
查看次数

如何在 geom_col 图中仅标记模态峰值

我想在 geom_col 图上仅在模态条(最高峰)上方放置一个标签,给出 x 轴值 (CAG)。这是一个例子,但我只能让它标记每个峰值。

x <- seq(-20, 20, by = .1)
y <- dnorm(x, mean = 5.0, sd = 1.0)
z <- data.frame(CAG = 1:401, height = y)
ggplot(z, aes(x=CAG, y=height)) +
  geom_col() +
  geom_text(aes(label = CAG))
Run Code Online (Sandbox Code Playgroud)

如果您能帮助我仅标记最高峰,我将非常感激

r ggplot2 geom-col

5
推荐指数
1
解决办法
266
查看次数

如何使用字符对象通过 dplyr 重命名列

我想通过使用变量以动态方式使用 dplyr 重命名列。但是,它只是为列命名变量的名称,而不是其内容。有任何想法吗??

colnames(y)
[1] "time"         "channel_1"    "channel_2"    "channel_3"    "channel_4"    "channel_5"    "correction"   "channel.corr"

ladder.channel <- "channel_4"
fsa.bc <- y %>%
    select(-c(all_of(ladder.channel), "correction")) %>%
    rename(ladder.channel = channel.corr)

colnames(fsa.bc)
"time"           "channel_1"      "channel_2"      "channel_3"      "channel_5"      "ladder.channel"
Run Code Online (Sandbox Code Playgroud)

r rename dplyr

5
推荐指数
1
解决办法
2484
查看次数

如何使用 tidyverse mutate 和由外部变量命名的列减去两列

I\xe2\x80\x99d 喜欢动态分配要相互减去的列。我\xe2\x80\x99已经阅读了一圈,看起来我需要使用all_of,也许across如何使用 dplyr 从 R 中的数据帧中的多列中减去一列如何在 dplyr 过滤器中使用对象?)。我可以让它适用于变异短语中的一个变量(例如mutate(y = all_of(x))),但我可以\xe2\x80\x99t 似乎可以使用两个变量进行简单的计算。Here\xe2\x80\x99s 是我想要做的事情的简化示例:

\n
var1 <- c("Sepal.Length")\nvar2 <- c("Sepal.Width")\n\nresult <- iris %>%\n  mutate(calculation = all_of(var1) - all_of(var2))\n
Run Code Online (Sandbox Code Playgroud)\n

r dplyr tidyverse across

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

在 dplyr mutate 中,如何使用变量来分配新的列名?

我可以使用变量来表示 中的列名称dplyr mutate,只要它位于计算部分的右侧即可。这工作正常:

library(dplyr)
var <- "mass"
x <- starwars %>%
  mutate(height = height * 2,
         mass = get(var) * 2)
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用变量来表示新的列名称(即在左侧),则会抛出错误。例如,这会导致错误:

var <- "mass"
x <- starwars %>%
  mutate(height = height * 2,
         get(var) = get(var) * 2)
Run Code Online (Sandbox Code Playgroud)

如何在 中使用变量作为列名mutate

r dplyr

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

标签 统计

r ×6

dplyr ×3

ggplot2 ×2

across ×1

geom-col ×1

rename ×1

tidyverse ×1