首页 > 解决方案 > 如何在除法操作周围静默撤消 dplyr 变异

问题描述

我有以下数据框:

library(tidyverse)

dat <-  structure(list(sid = c("MK1", "MK2", "MK3"), nof_reads = c(19786677L, 
29531664L, 1195340L), mapped_reads = c(19785168L, 29529532L, 
1195250L)), .Names = c("sid", "nof_reads", "mapped_reads"), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -3L))


dat
#> # A tibble: 3 x 3
#>   sid   nof_reads mapped_reads
#>   <chr>     <int>        <int>
#> 1 MK1    19786677     19785168
#> 2 MK2    29531664     29529532
#> 3 MK3     1195340      1195250

当我通过除以尝试以下操作mapped_readsnof_reads,我得到了这个:

> dat %>% mutate(rate = mapped_reads/nof_reads)
# A tibble: 3 x 4
  sid   nof_reads mapped_reads  rate
  <chr>     <int>        <int> <dbl>
1 MK1    19786677     19785168 1.000
2 MK2    29531664     29529532 1.000
3 MK3     1195340      1195250 1.000

请注意该rate列的值四舍五入为 1.000。实际上它是在哪里MK_1

>  19785168/19786677 
[1] 0.9999237

我该如何解决这个问题,以便它在不四舍五入的情况下输出。

标签: rdplyrtidyverse

解决方案


dat %>% mutate(rate = mapped_reads/nof_reads) %>% as.data.frame()

  sid nof_reads mapped_reads     rate
1 MK1  19786677     19785168 0.999924
2 MK2  29531664     29529532 0.999928
3 MK3   1195340      1195250 0.999925

推荐阅读