2017-01-06 101 views
-1

附加我有下列R-腳本循環和R中

optioncost =c(5,52,23,15,134,996,2033,18) 
    options=c(0,1,1,1,1,0,1,1) 
    cip=c() 
    for (options_ind in options) 
    { 
     if(options_ind==1) 
     { 
     cip=append(cip,optioncost[which(options==options_ind)]) 
     } 
    } 
    cip 

我試圖獲得(52 23 15 134 2033 18)。當我運行上面的腳本時,我得到的輸出列表是預期結果長度的6倍。我的代碼輸出如下cip「52 23 15 134 2033 18 52 23 15 134 2033 18 52 23 15 134 2033 18 52 23 15 134 2033 18 52 23 15 134 2033 18 52 23 15 134 2033 18」。

請幫我找出我在哪裏呢?

回答

2

optioncost[which(options==options_ind)]選擇您想要的信息。

for循環是多餘的,在這種情況下,只是在選項中重複執行多個「1」的過程,這就是6.這就是爲什麼您的輸出數據比您的數據大6倍想。

1
optioncost[as.logical(options)] 

如果你想用一個for迴路工作,那麼這個路要走

cip=c() 
for (i in seq_along(options)) 
{ 
    if(options[i]==1) 
    { 
    cip=append(cip,optioncost[i]) 
    } 
} 
cip