2016-08-17 152 views
0

查詢的是選擇在指數1,4,7,10,13元素...解釋下列R-代碼

它可以通過多種方式來實現,但我不明白的工作以下:

yVec <- sample(0:999,size = 250,replace = T) 
    yVec[c(T,F,F)] 

輸出: [1] 709 517 437 783 671 860 581 347 279 974 216 776 538 460 985 248 317 288 687 957 938 101 [23] 615 285 106 414 881 488 484 791 246 643 845 553 465 87 993 116 473 635 310 428 965 19 [45] 489 803 604 800 175 516 902 689 881 593 835 398 358 850 791 915 665 167 866 942 320 482 [67] 216 488 681 273 884 970 469 717 127 952 284 695 325 777 792 72 738 791

+1

akrun發佈了有效回覆。我想補充一點,用T代替TRUE和F代替FALSE是不好的做法,應該避免。代碼短缺的收益很小,這是一種風險,即某人在某個時間定義變量T或F時,其他值不是TRUE且FALSE很大。設置'T <-0',上面的代碼將不再工作。 – Bernhard

+0

@Bernhard謝謝你的建議,我會記住的 –

回答

1

載體c(TRUE, FALSE, FALSE)被再循環到整個矢量和將提取第一,第四,第七等的vector的值。它類似於將邏輯向量複製到向量的長度。

yVec[rep(c(TRUE, FALSE, FALSE), length.out = length(yVec))] 

無論邏輯向量爲TRUE,它都會提取'yVec'中的相應元素。

+1

所以這是因爲回收,謝謝指出。我的查詢已解決。 –