将数值传递到使用dplyr的函数中
我正在尝试编写一个函数,用于过滤所有包含将数值传递到使用dplyr的函数中,r,dplyr,R,Dplyr,我正在尝试编写一个函数,用于过滤所有包含NA且调整后的pvalue低于某个阈值的行 代码 filter_results <- function(result, pvalue){ df <- as.data.frame(result) df<- df %>% filter(!is.na(padj)) %>% filter(padj< pvalue) return(df) } dds_res_filter
NA
且调整后的pvalue
低于某个阈值的行
代码
filter_results <- function(result, pvalue){
df <- as.data.frame(result)
df<- df %>%
filter(!is.na(padj)) %>%
filter(padj< pvalue)
return(df)
}
dds_res_filtered_pvalue <- filter_results(dds_res_simple, 0.01)
问题
如何将数值传递到使用dplyr的函数中?查看数据框的名称和列名,我猜您使用的是DESeq2。数据框中有一个名为pvalue的列,因此您必须使用另一个变量,否则它将使用筛选器()中的pvalue列: 现在我们修改您的函数,使用“截止”而不是pvalue:
filter_results <- function(result, cutoff){
df <- as.data.frame(result)
df<- df %>%
filter(!is.na(padj)) %>%
filter(padj< cutoff)
return(df)
}
为了应用dplyr-y,您需要使用非标准评估function@Sotos我不这么认为,只有当列名传递给函数时才需要NSE。此处没有传递任何列名。@n您可以通过添加数据使此帖子可复制吗。这个函数在理想情况下应该可以工作。哦..错过了。我又冲进去了。认为pvalue是一列:)这里使用
库(tidyverse)没有问题;筛选结果(mtcars%>%变异(padj=cyl),8)
library(DESeq2)
library(dplyr)
set.seed(100)
dds = makeExampleDESeqDataSet(betaSD = 1)
dds = DESeq(dds)
dds_res_simple = results(dds)
colnames(dds_res_simple)
[1] "baseMean" "log2FoldChange" "lfcSE" "stat"
[5] "pvalue" "padj"
filter_results <- function(result, cutoff){
df <- as.data.frame(result)
df<- df %>%
filter(!is.na(padj)) %>%
filter(padj< cutoff)
return(df)
}
head(filter_results(dds_res_simple,0.05))
baseMean log2FoldChange lfcSE stat pvalue padj
1 38.01463 1.714453 0.3723547 4.604353 4.137494e-06 6.173404e-05
2 70.35889 1.503615 0.3152131 4.770152 1.840868e-06 2.983475e-05
3 18.94027 1.558557 0.5314113 2.932864 3.358511e-03 1.635751e-02
max(filter_results(dds_res_simple,0.05)$padj)
0.04594662