2017-04-18 88 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) 
}