R代码:循环中的动态变量



我在R中面临挑战。我正在编写一个代码,该代码包含了C++中编写的另一个代码,称为MHX

MHX通过输入一些浓度等来用于化学数据分析。RMHX之间的集成效果很好。因此,我能够以cat的形式(此处)编写我的MHX代码定义,然后调用bash命令从终端运行MHX

现在,MHX的结果作为选项卡划界数据表提供了我可以在R中读取的情况下读取的。问题是我使用R使用循环模拟大量的MHX计算。

因此,需要写dynamic variables,这是我被困。让我以我的R代码的示例给您更多信息:

for (i in 1:100) {
fin  <-  file.create("input/ex1")  #MHX input file
fout <- file.create("output/ex1.out") #MHX output file
FNM <-  paste0("table_data/pH", i, ".txt")  #filename used inside MHX definition
file.create(FNM)   #this is used to create FNM table in R
fXY <-  file.create(paste0("table_data/ECOMXY", i, ".txt"))  
ifelse (HERE SOME MATHEMATICAL DEFINITIONS OF SOME VARIABLES)
ksource(MHXCode)  #THIS CALLS MY MHX CODE which is inside another R code called `MHXCode` using a custom function KSOURCE. No problem here.

直到这里我没有重大问题。现在我需要设置dynamic variables:首先,我正在创建变量PHL1PHL100

assign(paste("PHL", i, sep=""), read.table(paste0("table_data/pH", i, ".txt") ,skip=0, sep="t", head=TRUE, na.strings = "-Inf"))

每个PHL表包含两个行和约20列。现在,我有兴趣从第二行中为每列创建数据frames。以称为 EMF的行1为例,理想情况下,我需要为从PHLPHL100的所有表进行以下操作,这非常乏味:

EMFT <- cbind(PHL1$EMF[2], PHL2$EMF[2], PHL3$EMF[2], PHL4$EMF[2], PHL5$EMF[2], PHL6$EMF[2],PHL7$EMF[2], PHL8$EMF[2], PHL9$EMF[2], PHL10$EMF[2], ....... etc up to PHL100! )

我尝试了许多事情来实现上述问题,但我没有成功,包括:

XX <- assign(paste0("PHL", i, "$EMF[2]"), cat(paste0("PHL", i, "$EMF[2]")))

我将需要对其他变量进行相同的操作,以便能够创建一些复杂的图。我希望任何人都可以提供帮助。

我必须提到,分配的主要问题是我获得了变量的名称,因此无法返回其值。同样对于CAT,您不能使用它返回值,在上面的示例中将获得NULL。简单我被卡住了!!

请帮助。

感谢贾斯汀,他给了我一个线索来回答我的问题。这是我所做的:

files <- list.files(path="table_data", pattern=".dat", full.names=T); files
FRM <- NULL
for (f in files){
dat <- read.table(f, skip=0, header=TRUE, sep="t", na.strings="",quote="", colClasses="character")[2,]  

请注意,[2,]参数意味着您在保持标题时跳过所有行,这是我要寻找的。

现在我可以将它们全部绑在一个表格中。

FRM <- rbind(FRM, dat)

这是一个简短的答案,我认为它很整洁,排序了!

相关内容

  • 没有找到相关文章

最新更新