2017-04-18 52 views
0

問題:r代表循環迭代不是每個項目

我的for循環不會出現在我的數據幀進行循環。我認爲這是因爲它打印出我的調試打印行時的所有內容。在對代碼工作對自己

目標

我想在一個相當大的數據集上運行的所有組的相關性。該代碼應該遍歷一個唯一的路徑列表(var3)並在每條路徑上運行相關性。

數據幀設置:

df.1 
id var1 var2 var3 
1 23 2.1 "this" 
2 32 2.2 "is" 
3 13 2.3 "is" 

CODE

# reduce size 
directory.df$var1<-format(round(directory.df$var1/1000,1),nsmall=1) 
directory.df$var2<- format(round(directory.df$var2/1000,1),nsmall=1) 

df.1 <- unique(directory.df$var3) 
df.1 <- data.table(unique.directories) 

for (current.dir in df.1) 
{ 
print (current.dir) 
directory.group <- subset(directory.df, var3 == current.dir) 
directory.group$var1<- as.numeric(directory.group$var1) 
directory.group$var2<- as.numeric(directory.group$var2) 

## correlation ## 
cor(directory.group$var1, directory.group$var2) 
} 

當運行該代碼,打印(current.dir)將打印出整個列表。看起來好像for(current.dir in df.1)的第一行將var3的所有值並將其放入current.dir中。

+0

擺脫'df.1 < - data.table(unique.directories)'' – Ista

+0

爲(在df.1 current.dir)'將基本上循環遍歷每個列(有其中只有一個在這種情況下)。這是因爲'df.1'本質上是一個列表,每列都是列表的一個元素。 – joran

+0

樣本數據'df.1'確實是'directory.df'?而'df.1'只是'directory.df $ var3'中唯一值的數組?目前還不清楚輸入是什麼,或者有額外的代碼與問題無關。 – manotheshark

回答

0

我只是需要刪除這一行df.1 < - data.table(unique.directories),它的工作。

# reduce size 
directory.df$var1<-format(round(directory.df$var1/1000,1),nsmall=1) 
directory.df$var2<- format(round(directory.df$var2/1000,1),nsmall=1) 

df.1 <- unique(directory.df$var3) 

for (current.dir in df.1) 
{ 
print (current.dir) 
directory.group <- subset(directory.df, var3 == current.dir) 
directory.group$var1<- as.numeric(directory.group$var1) 
directory.group$var2<- as.numeric(directory.group$var2) 

## correlation ## 
cor(directory.group$var1, directory.group$var2) 
}