2016-11-12 61 views
1

此代碼向我顯示此錯誤:「要替換的項目數不是替換長度的倍數」。我無法弄清楚問題所在。R中的錯誤:要替換的項目數不是替換長度的倍數

所以這裏是代碼:

k <- c(0,0,0,0); 
x <-30; 
t <- c(10,20,30,35); 
x1 <- x+t; 
for(i in 1:4) 
{ 
    k[i] <- 0:(100-x1[i]-1); 
} 

我將不勝感激,如果有人可以幫助我對本。先謝謝你。

+1

您擁有長度爲4的'k',並在循環中指定爲> 4個元素。我想你需要'k < - vector('list',4)'並且在循環中'k [[i]] < - ...' – akrun

回答

1

作爲@akrun評論,首先預先分配長度爲4的列表不同長度的向量:

k <- vector('list', 4) 
x <- 30 
t <- c(10, 20, 30, 35) 
x1 <- x + t 

for(i in 1:4) k[[i]] <- 0:(100 - x1[i] - 1) 

>k 
#[[1]] 
#[1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 
#[33] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 

#[[2]] 
#[1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 
#[33] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 
# etc 

順便說一句,就不需要分號或甚至捲曲由於循環適合一條線,所以可以使用大括號。

+0

非常感謝親愛的,您的回答確實幫助我... –

+0

否問題,我可否請你接受答案? – Joe