2016-08-17 112 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

所以这是因为回收,谢谢指出。我的查询已解决。 –