2016-11-04 8 views
0

この質問の表現が理想的でない場合は、私に許してください。私はRにオーバーフローと初心者を積み重ねる新しいです。 私は各参加者のための1つの.txtファイルの束で働いています。各ファイルには件名番号(「015.txt」など)が付けられ、X、Y、および時間の列が含まれます。 私は、リードスコア、差異スコア、および変更率のデータを1ファイルずつ計算して作成し、そのファイルを再保存するためのコードを用意しています(「015LDscores.txt」など)。複数のテキストファイルのそれぞれについて、スライド機能用のループforループ

setwd("/Users") #Set directory 
my.data<-read.table(file.choose(),header=T,sep="\t") 

#Lead scores for X and Y 
require(DataCombine) 
LeadX<-slide(my.data, Var="X", slideBy=-1) 
LeadXY<-slide(LeadX, Var="Y", slideBy=-1) 
LeadXY<-na.omit(LeadY) #Delete the first row of null lead values 

#Difference scores for X and Y 
LeadXY$DiffX<-(LeadXY$"X-1"-LeadY$"X") 
LeadXY$DiffY<-(LeadXY$"Y-1"-LeadY$"Y") 

#Rate of Change for X 
LeadXY<-slide(LeadXY, Var="X", slideBy=1) #Create column of lagged X scores (X1) 
write.table(LeadXY,"/Users/mstoehr/015LDscores.txt",sep="\t") #Save 
LeadXY$velocityX<-(LeadXY$"X1"-LeadY$"X-1")/2 #Calculate rate of change of X 
write.table(LeadY,"/Users/mstoehr/015LDscores.txt",sep="\t") #Save 

私は指定されたディレクトリに(パターン「* .TXT」に従って保存されて)すべてのテキストファイルのためにこれを行うにはRを伝えforループを統合したいです。 forループのためのいくつかの別のコードがあります。

setwd("/Users") 
subjectFiles <- list.files() 
for(i in 1:length(subjectFiles)){ 
#subject calculations} 

は残念ながら、私はこれらを統合する方法がわからないですし、上記のコマンドのほんの一部でループのために統合するためのあらゆる試みに失敗しました。

答えて

0

list.filesを使用すると、そのパターンのファイルだけをプルし、結果を保存するために患者番号を抽出することができます。テキストファイルが作業ディレクトリにあり、そのディレクトリ内のすべての.txtファイルをプルしたい場合、このような何かが動作するはずです。

subjectFiles <- list.files(pattern = '*.txt') 
for (this_file in subjectFiles) { 
    ID <- gsub('.txt', '', this_file) 

    my.data <- read.table(this_file, header = T, sep = "\t") 

    #Lead scores for X and Y 
    require(DataCombine) 
    LeadX<-slide(my.data, Var="X", slideBy=-1) 
    LeadXY<-slide(LeadX, Var="Y", slideBy=-1) 
    LeadXY<-na.omit(LeadY) #Delete the first row of null lead values 

    #Difference scores for X and Y 
    LeadXY$DiffX<-(LeadXY$"X-1"-LeadY$"X") 
    LeadXY$DiffY<-(LeadXY$"Y-1"-LeadY$"Y") 

    #Rate of Change for X 
    LeadXY<-slide(LeadXY, Var="X", slideBy=1) #Create column of lagged X scores (X1) 
    write.table(LeadXY, paste0("/Users/mstoehr/", ID, "LDscores.txt"),sep="\t") #Save 
    LeadXY$velocityX<-(LeadXY$"X1"-LeadY$"X-1")/2 #Calculate rate of change of X 
    write.table(LeadY, paste0("/Users/mstoehr/", ID, "LDscores.txt"),sep="\t") #Save 

} 
+0

ありがとう、ありがとう。私はそのコードを試して、ディレクトリ内のすべてのテキストファイルをプルアップしますが、新しい変数の列を保存していないので、エラーメッセージ "Error:unexpected '}'が発生します:"} " – M21

+0

)最後の 'paste'コールで試してみてください。 – Craig

+0

それはうまくいくようでした。ありがとうCraig! – M21

関連する問題