我是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]]