You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用R语言中的read.pnm()函数批量导入多个.pgm格式图片?

如何用read.pnm()批量导入多个.pgm文件

当然可以批量导入.pgm文件啦!你遇到的错误是因为在lapply里调用read.pnm的方式不对——咱们来一步步解决:

错误原因

你写的lapply(allFiles, FUN = read.pnm())里,read.pnm()是直接执行了这个函数,但此时没有传入必需的file参数,R自然会报错说缺少file参数。lapply需要的是函数对象,而不是函数执行后的结果。

修正后的代码

这里有两种可行的写法:

写法1:直接传递函数名(最简洁)

lapply会自动把allFiles里的每个文件路径作为第一个参数传给read.pnm

# 注意pattern用正则精确匹配.pgm后缀,避免匹配到类似"xpgm.txt"的文件
allFiles <- list.files(path = "faces_subset", pattern = "\\.pgm$", full.names = TRUE)
pictures <- lapply(allFiles, read.pnm)

写法2:使用匿名函数(适合需要额外参数的场景)

如果需要给read.pnm传递其他参数(比如header = TRUE之类的),可以用匿名函数来包装:

pictures <- lapply(allFiles, function(file_path) {
  read.pnm(file_path, header = TRUE) # 这里可以添加你需要的额外参数
})

额外小提示

导入后的pictures是一个列表,每个元素是单个.pgm文件的内容。如果后续需要把这些图片合并成矩阵/数组方便处理,可以试试abind包的abind()函数,或者如果每个图片已经被转成向量的话,用do.call(rbind, pictures)来合并成矩阵。

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

火山引擎 最新活动