我是一个R新手,试图从计算模型中分析一些批量数据 . 我有两个文件,一个批处理参数文件和原始输出数据 . 我正在尝试制作一个通用的R代码,它将接收批处理参数文件,确定变化的变量,并根据这些变化输出有关原始数据的统计信息 . 为了确定哪些变量具有一系列值(而不是常量),我尝试了以下代码:

for(i in names(params.no.constants)) {
if (length(levels(factor(params.no.constants$i))) > 1) {
var.values <- factor(params$i)
params$i <- factor(params$i)
#code to process this parameter
}
}

我们的想法是将批量参数中的数值数据考虑在内,看看它是否超过1级,如果是,则将其分配给我的迭代器变量(var.values),在参数列表中对该变量进行分解,然后进行处理来自原始数据文件的相应数据 . 有没有办法以我接近它的方式访问数据框的元素?或者更优雅的数据访问方案?

编辑1:我找到了一个解决方案,但对我来说这是非常臭的代码 . 我在循环之前将因子操作应用于参数,使用eval和parse构造我的变量,然后像以前一样进行操作 . 如果有更优雅的答案,我仍然会喜欢 .

params.no.constants <- lapply(params.no.constants,factor)
for(i in names(params.no.constants)) {
k <- eval(parse(text=paste("params.no.constants","$",i,sep="")))
if (length(levels(k)) > 1) {
var.values <- levels(k)
#code to process this parameter
}
}

编辑2:根据下面的评论,变量k赋值的简单代码:

k <- params.no.constants[[i]]