更改变量并将输出保存在R中的for循环中

Posted

技术标签:

【中文标题】更改变量并将输出保存在R中的for循环中【英文标题】:change variables and save output in for loop in R 【发布时间】:2016-02-12 14:41:36 【问题描述】:

我有以下用 R 编写的代码,我应该将其放入 for 循环中。我是 R 新手,所以我请求您的帮助。

我分解代码:

导入 lmerTest 包

library(lmerTest)

加载一个表(这应该在 for 循环之外

table = read.csv("path/namefile.csv")
table_data = table
table_data[table_data == "<undefined>"] <- NA
na_rows <- is.na(table_data[,4])
table_data_sub <- table_data[!na_rows,]

我计算模型,这应该在 for 循环内,并且 STAGE1 每次都应该改变。特别是它应该是 STAGE1、STAGE2、...,直到 STAGE13。 所有这些变量都是 talbe table_data_sub 的列

for循环开始

TNST.model <- lmer(STAGE1 ~ Patient_type+Gender+Age+(1|Subject),data=table_data,REML=FALSE)

我计算最小二乘均值

TNST.model_ls <-lsmeans(TNST.model)
difflsmeans_TNST<-difflsmeans(TNST.model, test.effs=NULL)

我将输出保存在 2 个文件中,这些文件应将名称相应地更改为 STAGE

out_file <- file("/path/STAGE1_diffmean.csv", open="a")  #creates a file in append mode
for (i in seq_along(difflsmeans_TNST))
  write.table(names(difflsmeans_TNST)[i], file=out_file, sep=",", dec=".", 
              quote=FALSE, col.names=FALSE, row.names=FALSE)  #writes the name of the  list elements ("A", "B", etc)
  write.table(difflsmeans_TNST[[i]], file=out_file, sep=",", dec=".", quote=FALSE, 
              col.names=NA, row.names=TRUE)  #writes the data.frames

close(out_file)  #close connection to file.csv

out_file <- file("/path/STAGE1_leastmean.csv", open="a")  #creates a file in append mode
for (i in seq_along(TNST.model_ls))
  write.table(names(TNST.model_ls)[i], file=out_file, sep=",", dec=".", 
              quote=FALSE, col.names=FALSE, row.names=FALSE)  #writes the name of the  list elements ("A", "B", etc)
  write.table(TNST.model_ls[[i]], file=out_file, sep=",", dec=".", quote=FALSE, 
              col.names=NA, row.names=TRUE)  #writes the data.frames

close(out_file)  #close connection to file.csv

for循环结束

【问题讨论】:

【参考方案1】:

这很容易。

要遍历矩阵/数据框的列(或行),您只需使用apply。将循环的逻辑放在一个函数中(获取行/列),然后指示是否要遍历行或列。例如:

data(cars)

result <- apply(cars, 2, mean)

计算cars 中每一列的平均值。键入 ?apply 以获取有关该方法的更多信息。存在迭代列表、数组等的变体。

【讨论】:

以上是关于更改变量并将输出保存在R中的for循环中的主要内容,如果未能解决你的问题,请参考以下文章

在 for 循环 r markdown 中包含两个变量之间的空格(pdf 输出)

R语言中关于for语句中向量循环赋值求助

Windows - for 循环中的 findstr(文件内容)

在for循环中运行函数并将返回的数据帧添加到R中的列表中

在带有pdf输出的r markdown中的for循环中包含多个空行

在循环内创建的变量在 C 中的迭代期间更改值