在R循环中读取文件时更新变量

时间:2017-12-27 20:50:10

标签: r loops

我正在读取多个txt文件,我想删除第一行并将其保存为变量,转置它以及稍后当我完成某些操作时我想将其与其他变量一起保存文件。

问题是我的代码只是保存第一个txt信息并重复其余的txt文件。

我的代码:

    for(i in 1:length(filesW))
{
  data <- read.table(paste0("data",i,".txt", sep=""), sep=",", header=TRUE)
  winstepsdat2 <- data.frame(data)


  genparameter<-t((winstepsdat2[1,]))
  winstepsdat<-winstepsdat2[-1,]

  num_col<-ncol(winstepsdat)
  num_row<-nrow(winstepsdat)

  colnames(winstepsdat) <- paste("i", 1:num_col, sep="")
  winstepsdat$name<- paste ("p", 1:num_row, sep="")

  #must change ni and labels for 1:n??
  cmd <- wcmd(title = "R2Winsteps Example", data=paste0("data",i,".txt"),item1 = 1, ni =num_col , name1 = 30, namelen = 20,labels = paste('i',                                                                                                                                1:num_col, sep = ""), hlines = "Y" ) #codes=1:5

  write.wdat(winstepsdat, cmd)

  write.wcmd(cmd, paste0("CMFILE[",i,"].cmd"))

  winsteps2(cmd, outfile=paste0("outfile[",i,"].txt"), pfile=paste0("pfile",i,".txt"), ifile=paste0("ifile",i,".txt"), windir="C:/Winsteps/Winsteps.exe")

} #end for

不知怎的,当我浏览文本文件时,winstepsdat会发生变化(假设我得到其他计算的不同值,但genparameter只保留第一个txt文件值。如何为我读取的每个文本文件存储/保存genparameter?

我是初学程序员,所以我很感激帮助。谢谢,Shmy

1 个答案:

答案 0 :(得分:1)

我不知道我是否正确理解了你的问题,但我猜你需要的是初始化变量(例如,作为列表),然后用for循环填充列表。

类似的东西:

genparameter = list()
winstepsdat = list()
for(i in 1:length(filesW)) #i don't know what the length(filesW) was doing here
{
 data <- read.table(paste0("data",i,".txt", sep=""), sep=",", header=TRUE)
winstepsdat2 <- data.frame(data)

genparameter[[i]]<-t((winstepsdat2[1,])
winstepsdat[[i]] <-winstepsdat2[-1,]

...