You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RStudio中从猫狗数据集抽取图片子集并迁移至新文件夹

在R中抽取猫狗数据集图片子集的实现方案

1. 核心思路

完全可以在RStudio里自动完成图片子集的抽取与复制/移动,无需手动操作。下面提供两种实现方式,优先推荐随机抽取(保证数据分布均衡),也支持按文件名顺序抽取。

2. 随机抽取图片(优先方案)

该方案会从猫、狗两类图片中分别随机抽取指定数量,确保子集的类别分布和原数据集一致:

# 替换为你的原始图片文件夹路径和目标子集文件夹路径
original_img_dir <- "你的train文件夹路径"
target_sample_dir <- "你要创建的子集文件夹路径"

# 创建目标文件夹(不存在则自动创建)
dir.create(target_sample_dir, recursive = TRUE, showWarnings = FALSE)

# 获取所有图片文件名
all_images <- list.files(original_img_dir, pattern = "\\.(jpg|jpeg)$", full.names = FALSE)

# 分离猫、狗图片
cat_images <- grep("^cat", all_images, value = TRUE)
dog_images <- grep("^dog", all_images, value = TRUE)

# 随机抽取各1000张(可自行调整数量,比如各1500张凑3000总样本)
sample_cats <- sample(cat_images, size = 1000)
sample_dogs <- sample(dog_images, size = 1000)

# 合并选中的图片列表
selected_images <- c(sample_cats, sample_dogs)

# 复制图片到目标文件夹
file.copy(
  from = file.path(original_img_dir, selected_images),
  to = file.path(target_sample_dir, selected_images)
)

3. 按文件名顺序抽取(备选方案)

如果不需要随机,直接按文件名顺序取前N张:

# 沿用上面的路径变量,直接执行以下代码
# 按顺序取猫、狗各1000张
sample_cats_order <- head(cat_images, 1000)
sample_dogs_order <- head(dog_images, 1000)

selected_images_order <- c(sample_cats_order, sample_dogs_order)

# 复制到目标文件夹
file.copy(
  from = file.path(original_img_dir, selected_images_order),
  to = file.path(target_sample_dir, selected_images_order)
)

4. 额外说明

  • 若需要移动图片而非复制,将代码中的file.copy替换为file.rename即可(注意:移动后原文件夹会丢失这些图片,谨慎操作)
  • 确保R对原始文件夹有读取权限,对目标文件夹有写入权限
  • 可根据需求自由调整抽取的数量,比如总样本2500张就设置猫、狗各1250张

内容的提问来源于stack exchange,提问作者zappbran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:42:40