打开多个数据帧,使用逻辑顺序一次性找到答案

  • 本文关键字:顺序 一次性 答案 数据帧 r
  • 更新时间 :
  • 英文 :


我有许多数据帧要打开,并假设它位于名为"CNV"的文件夹中

Ss我读过这个链接[1]:打开文件夹中的所有文件,并应用一个函数,但我仍然很困惑。

假设我有文件名a、b、c、d、e。。。。z在文件夹CNV在桌面中

在这些文件中有相同的列

Sample, start, stop, event, probe, length
qd1234,  2666,  2888,  CN gain,  23,  235    
cc234,   1000,   1500,  CN loss,  5,  500

我的问题是如何在一次打开所有文件,并在打开所有这些文件之后

我想选择探测号大于5、CN损失探测号大于3、探测/长度小于30 的CN增益

预期结果:

a
Sample, start, stop, event, probe, length, length/probe
qd1234,  2666,  2888,  CN gain,  23,  235, 9 
qd1534,  1200,  1800,  CN loss,  60,  600  10
b
Sample, start, stop, event, probe, length, length/probe
qd234,  2666,  2888,  CN gain,  23,  235, 9 
qd534,  1200,  1800,  CN loss,  60,  600  10

我想你可能正在寻找这样的东西。当我创建crit时,我会查看刚刚导入的data.frame的列,并查看哪些行满足指定的条件。在此基础上,我将完整的data.frame子集化,并返回(函数返回最后一行)子集。

my.files <- list.files()
my.df <- sapply(my.files, function(x) {
  read.in <- read.table(x, header = TRUE, sep = ",")
  crit <- with(read.in, which(probe > 5 & probe > 3 & (probe/length) < 30))
  read.in[crit, ]
}, simplify = FALSE)

由于我们没有一个可复制的例子,我在下面演示这个子集是如何实际工作的。

set.seed(357)
xy <- data.frame(x = 1:10, y = runif(10), z = rnorm(10))
xy # we expect row 6 to satisfy all the conditions
xy[with(xy, which(x > 5 & y < 0.5 & z < 0)), ]

最新更新