小编kin*_*any的帖子

如何在mutate(dplyr)中使用自定义函数?

我正在使用dplyr重写我的所有代码,并需要mutate/mutate_at函数的帮助.我需要的是将自定义函数应用于我的表中的两列.理想情况下,我会通过它们的索引来引用这些列,但现在我甚至无法通过名称引用它.

功能是:

binom.test.p <- function(x) {
  if (is.na(x[1])|is.na(x[2])|(x[1]+x[2])<10) {
    return(NA)
  } 
  else {
    return(binom.test(x, alternative="two.sided")$p.value)
  }
} 
Run Code Online (Sandbox Code Playgroud)

我的数据:

table <- data.frame(geneId=c("a", "b", "c", "d"), ref_SG1_E2_1_R1_Sum = c(10,20,10,15), alt_SG1_E2_1_R1_Sum = c(10,20,10,15))
Run Code Online (Sandbox Code Playgroud)

所以我这样做:

table %>%
  mutate(Ratio=binom.test.p(c(ref_SG1_E2_1_R1_Sum, alt_SG1_E2_1_R1_Sum)))
Error: incorrect length of 'x'
Run Code Online (Sandbox Code Playgroud)

如果我做:

table %>% 
mutate(Ratio=binom.test.p(ref_SG1_E2_1_R1_Sum, alt_SG1_E2_1_R1_Sum))
Error: unused argument (c(10, 20, 10, 15))
Run Code Online (Sandbox Code Playgroud)

第二个错误可能是因为我的函数需要一个向量而是获得两个参数.

但即使忘记了我的功能.这有效:

table %>%
  mutate(sum = ref_SG1_E2_1_R1_Sum + alt_SG1_E2_1_R1_Sum)
Run Code Online (Sandbox Code Playgroud)

这不是:

    table %>%
      mutate(.cols=c(2:3), .funs=funs(sum=sum(.)))
Error: wrong result size (2), expected 4 or 1
Run Code Online (Sandbox Code Playgroud)

所以这可能是我对dplyr如何工作的误解.

r dplyr mutate

8
推荐指数
2
解决办法
7087
查看次数

在没有 Shiny 服务器的 Docker 中运行 Shinyapp

我正在尝试在 Docker 中运行一个闪亮的应用程序,我发现有两种方法可以做到这一点:

1)在Docker中运行Shiny服务器,然后在该服务器上运行Shiny应用程序。它有效,但我仍在努力使用户目录从 Shiny 应用程序中可见(使用 -v 参数进行简单安装没有帮助)。

2)使用命令直接在Docker上运行Shiny R -e "shiny::runApp('/srv/shiny-server/')"。在这种情况下,它几乎可以工作,但我收到此错误:

shiny::runApp('/srv/shiny-server/', launch.browser = T)
Loading required package: shiny
Listening on http://127.0.0.1:4637
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: www-browser: not found
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: links2: not found
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: elinks: not found
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: links: not found
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: lynx: not found
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: w3m: not found
xdg-open: no method available for opening 'http://127.0.0.1:4637'
Run Code Online (Sandbox Code Playgroud)

我尝试安装浏览器(添加apt-get install -y firefox到我的 Dockerfile 中),但它仍然不起作用。

我无法找到任何关于如何在没有 Shiny Server 的情况下在 Docker …

r shiny docker

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

标签 统计

r ×2

docker ×1

dplyr ×1

mutate ×1

shiny ×1