【发布时间】:2020-03-01 23:56:57
【问题描述】:
我有一个包含 4000 多张图像的数据集。为了弄清楚代码,我将其中的一小部分移到了另一个文件夹中。
文件如下所示:
文件夹
[1] "r01c01f01p01-ch3.tiff" "r01c01f01p01-ch4.tiff" "r01c01f02p01-ch1.tiff"
[4] "r01c01f03p01-ch2.tiff" "r01c01f03p01-ch3.tiff" "r01c01f04p01-ch2.tiff"
[7] "r01c01f04p01-ch4.tiff" "r01c01f05p01-ch1.tiff" "r01c01f05p01-ch2.tiff"
[10] "r01c01f06p01-ch2.tiff" "r01c01f06p01-ch4.tiff" "r01c01f09p01-ch3.tiff"
[13] "r01c01f09p01-ch4.tiff" "r01c01f10p01-ch1.tiff" "r01c01f10p01-ch4.tiff"
[16] "r01c01f11p01-ch1.tiff" "r01c01f11p01-ch2.tiff" "r01c01f11p01-ch3.tiff"
[19] "r01c01f11p01-ch4.tiff" "r01c02f10p01-ch1.tiff" "r01c02f10p01-ch2.tiff"
[22] "r01c02f10p01-ch3.tiff" "r01c02f10p01-ch4.tiff"
我无法删除 -ch# 之前的名称,因为该信息很重要。然而,我想要做的是过滤这个图像列表,并只返回具有所有四个 ch 值(ch1-4)的集合(即:r01c02f10p01)。
我原本以为我们可以这样处理这个问题:
ch1 <- dir(path="/Desktop/cp/complete//", pattern="ch1")
ch2 <- dir(path="/Desktop/cp/complete//", pattern="ch2")
ch3 <- dir(path="/Desktop/cp/complete//", pattern="ch3")
ch4 <- dir(path="/Desktop/cp/complete//", pattern="ch4")
使用file.remove 函数应用此列表,类似于:
final2 <- dir(path="/Desktop/cp1/Images//", pattern="ch5")
file.remove(folder,final2)
但是,为每个 ch 值创建新变量会分散每个文件。我不确定如何使用这些来实际区分单个图像是否具有所有四个 ch 值来有意义地过滤我的图像。我有点不知所措,因为我看到的其他来源的问题与这个问题不太匹配。
之前,我可以像这样从我的图像集中删除所有带有 ch5 的图像。我在想这可能有助于尝试仅过滤具有 ch1-ch4 的图像,但我不确定如何继续。
##Create folder variable which has all image files
folder <- list.files(getwd())
##Create final2 variable which has all image files ending in ch5
final2 <- dir(path="/Desktop/cp1/Images//", pattern="ch5")
##Remove final2 from folder
file.remove(folder,final2)
总结一下:我希望从没有完整 ch 值(即:可能只有 ch1 和 ch2,或 ch3 和 ch4,或 ch1、ch2、ch3 和 ch4)的随机分类中过滤文件,到只包含具有完整集合的文件(四个文件,分别为 ch1、ch2、ch3 和 ch4)。
【问题讨论】: