我正在根据包 eemR 使用以下内容导入文件文件夹:
library(data.table)
library(tidyverse)
library(eemR)
importIlliter <- function(file) {
fluoroFrame <- fread(file) %>% as.data.frame()
return(
list(
file = file,
x = fluoroFrame[ -1, -1] %>% t() %>% as.matrix() %>% unname(),
ex = fluoroFrame[ -1, 1] %>% as.numeric(),
em = fluoroFrame[ 1, -1] %>% as.numeric()
)
)
}
folder <- file.path("C:/Users/ejs7c/OneDrive/Desktop/eemR/")
eems <- eem_read(folder, recursive = TRUE, import_function = importIlliter)
但是,当我导入文件时,它们只是简单地称为 [[1]]、[[2]].. 等等 - 有没有办法让它在我导入文件时保留它们的名称?即,一个叫做 Raman520,我希望它在作为 eem 导入时被调用(在上面代码的最后一行)。
我的最终目标是自动化 eemR 包中的一些功能,但我假设即使我让文件保留其名称,我仍然可以做到这一点。
谢谢
答案 0 :(得分:0)
由于您已经使用了 tidyverse
,因此将 file
分配给列表名称的方法是
names(eems) <- map_chr(eems, pluck, "file")
演示
library(purrr)
eems <- list(
list(file = "file_1"),
list(file = "file_2"),
list(file = "file_3"),
list(file = "file_4")
)
eems
#> [[1]]
#> [[1]]$file
#> [1] "file_1"
#>
#>
#> [[2]]
#> [[2]]$file
#> [1] "file_2"
#>
#>
#> [[3]]
#> [[3]]$file
#> [1] "file_3"
#>
#>
#> [[4]]
#> [[4]]$file
#> [1] "file_4"
names(eems) <- map_chr(eems, pluck, "file")
eems
#> $file_1
#> $file_1$file
#> [1] "file_1"
#>
#>
#> $file_2
#> $file_2$file
#> [1] "file_2"
#>
#>
#> $file_3
#> $file_3$file
#> [1] "file_3"
#>
#>
#> $file_4
#> $file_4$file
#> [1] "file_4"
eems[["file_1"]]
#> $file
#> [1] "file_1"
由 reprex package (v2.0.0) 于 2021 年 5 月 24 日创建