基于过滤条件的数据框标签列表

时间:2021-01-23 15:55:54

标签: r list

list_of_files <- list.files('C1_to_C6/',pattern = '\\.txt$', full.names = TRUE)

#Further arguments to read.csv can be passed in ...
all_csv <- lapply(list_of_files,read.csv)

#Set the name of each list element to its
names(all_csv) <- gsub(".txt","",
                       list.files("C1_to_C6/",full.names = FALSE),
                       fixed = TRUE)

以上代码将我所有的文件读入列表。

现在我有一个数据框列表

list_of_files
 [1] "C1_to_C6//C1_C2_contrast.txt" "C1_to_C6//C1_C3_contrast.txt" "C1_to_C6//C1_C4_contrast.txt" "C1_to_C6//C1_C5_contrast.txt"
 [5] "C1_to_C6//C1_C6_contrast.txt" "C1_to_C6//C2_C3_contrast.txt" "C1_to_C6//C2_C4_contrast.txt" "C1_to_C6//C2_C5_contrast.txt"
 [9] "C1_to_C6//C2_C6_contrast.txt" "C1_to_C6//C3_C4_contrast.txt" "C1_to_C6//C3_C5_contrast.txt" "C1_to_C6//C4_C5_contrast.txt"
[13] "C1_to_C6//C4_C6_contrast.txt" "C1_to_C6//C5_C6_contrast.txt" "C1_to_C6//C6_C5_contrast.txt"

我的数据框的一般结构是这样的,由于某些问题,每当我执行 dput(head(a,5)) 整个数据来时,我无法放置数据框的 dput向上

ab <- read.table(text = "
gene  baseMean log2FoldChange      lfcSE       stat       pvalue         padj
 ENSMUSG00000033845 1104.8298     0.30429069 0.06539399  4.6531907 3.268377e-06 4.019525e-05
 ENSMUSG00000025903  848.4143     0.13443658 0.07048958  1.9071837 5.649680e-02 1.440507e-01
 ENSMUSG00000033813  510.3910     0.05108741 0.09050085  0.5644965 5.724163e-01 7.234561e-01
 ENSMUSG00000033793 1569.8826     0.04845688 0.06197695  0.7818531 4.343009e-01 6.049862e-01
 ENSMUSG00000025907 1430.4057    -0.32015475 0.06772883 -4.7270084 2.278518e-06 2.924837e-05", header = TRUE)

为了过滤单个数据框,我这样做。

sig_table_hw_oe <- filter(a, padj < 0.05 & abs(log2FoldChange) > 1)
UP_DOWN <- mutate(sig_table_hw_oe, UP_DOWN = ifelse(log2FoldChange > 1, "UP", "DOWN"))

现在我想对数据帧列表做同样的事情,我为单个数据帧做的如何做?

单个数据帧的输出是这样的

gene  baseMean log2FoldChange     lfcSE      stat       pvalue         padj UP_DOWN
 ENSMUSG00000103509  18.57491      -3.194136 0.7446761 -4.289297 1.792399e-05 1.812452e-04    DOWN
 ENSMUSG00000104358  22.75726      -1.448193 0.5525529 -2.620913 8.769460e-03 3.439516e-02    DOWN
 ENSMUSG00000026069 525.12341       1.083185 0.1057836 10.239630 1.317393e-24 2.045214e-22      UP

这就是我想要为我的数据框列表实现的目标,并将它们作为输出写入文件。

更新

我可以应用条件

abc <- lapply(all_csv, function(x) filter(x, padj < 0.05 & abs(log2FoldChange) > 1))

以上过滤了我的 DF 列表。

但是当我尝试使用下面的代码标记它时,我得到了这样的错误

abd <- lapply(abc, function(x) filter(x, UP_DOWN = ifelse(log2FoldChange > 1, "UP", "DOWN")))

Error: Problem with `filter()` input `..1`.
x Input `..1` is named.
ℹ This usually means that you've used `=` instead of `==`.
ℹ Did you mean `UP_DOWN == ifelse(log2FoldChange > 1, "UP", "DOWN")`?
Run `rlang::last_error()` to see where the error occurred.  

任何关于如何执行上述操作的建议将不胜感激。

0 个答案:

没有答案