2016-08-02 113 views
0

以下循环需要时间。有没有办法以更节省时间的方式来解决这个问题?以下data.table由27个变量和600多个观察值组成。R循环优化/循环太耗时

data <- read.table("file.txt", header = T, sep= "|") 
colnames(data)[c(1)] <- c("X") 
data <- as.data.table(data) 
n=1; 
vector <- vector() 
for(i in 2:nrow(data)) 
{ 
    if(data[["X"]][i] != data[["X"]][i-1]) 
    { 
    n=1; vector[i]=1} 
else { 
    n=n+1; vector[i]=n}} 

基本上,我需要指数X的唯一入口,即第一次就出现,第二时间就出现等的每外观然后合并这对现有的数据作为附加列。不过,我在编辑矢量时获得了股票。

谢谢。

+0

更耗时的方法? – MichaelChirico

+0

'vector'在哪里启动? –

+0

也是'n'在哪里发起的...... – MichaelChirico

回答

3

首先,使用fread

DT <- fread("file.txt", sep = "|") 

接下来,使用setnames

setnames(DT, 1, "X") 

最后,使用rowid

DT[ , vector := rowid(X)]  
+0

它工作...谢谢! –