我有这个for
循环来处理(校正)一些光谱数据:
names_list <- ls(pattern="s+\\d") # the names of the uncorrected spectra are s01, s02, s02 etc...
c <- mget(ls(pattern="s+\\d"))
for (file in c) {
process <- process_spec(file,
active = TRUE,
adj_intens = FALSE,
adj_intens_args = list(type = "none"),
conform_spec = TRUE,
conform_spec_args = list(range = FTIR_lib$wavenumber, res = 5, type = "interp"),
etc...)
names <- paste0("corr_", names_list)
assign(names, process, envir = .GlobalEnv) # OPTION 1
list2env(as.list(setNames(names, process)), envir = .GlobalEnv) # OPTION 2
}
我想在一个循环中将这个校正函数(process_spec()
)应用于我的所有光谱(s01,s02,s03等),并将全局环境中的这些校正对象命名为:corr_s01、corr_s02等...
选项1不起作用。
选项2创建“值”,而不是对象。
未校正的光谱对象示例:
str(s01)
List of 3
$ wavenumber: num [1:7468] 400 401 401 402 402 ...
$ spectra :Classes ‘data.table’ and 'data.frame': 7468 obs. of 1 variable:
..$ intensity: num [1:7468] 0.46 0.453 0.446 0.442 0.438 ...
..- attr(*, ".internal.selfref")=<externalptr>
$ metadata :Classes ‘data.table’ and 'data.frame': 1 obs. of 5 variables:
..$ x : int 1
..$ y : int 1
..$ file_name: chr "s01"
..$ file_id : chr "Nahal_Rahaf_2"
..$ col_id : chr "intensity"
..- attr(*, ".internal.selfref")=<externalptr>
- attr(*, "class")= chr [1:2] "OpenSpecy" "list"
谢谢
1条答案
按热度按时间hc8w905p1#
在R语言中,通常不是一个好主意,让一堆命名的全局变量遵循一个特定的模式(如corr_sN),而是使用一个列表。
corrList = lapply(c, function(file) process_spec(file, ...))
将
...
替换为process_spec
的所有参数。然后,可以通过索引
corrList[[i]]
访问这些对象