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

@ Бернхард Спасибо за совет, я буду помнить об этом –

ответ

1

Вектор c(TRUE, FALSE, FALSE) перерабатывает ко всему вектору и будет извлекать 1-й, 4-й, 7-й, и т.д. значения vector , Он похож на репликацию логического вектора на длину вектора.

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

Везде, где логический вектор TRUE, он будет извлекать соответствующий элемент в 'yVec'.

+1

Так что из-за переработки, спасибо, указывая на это. Мой запрос решен. –

Смежные вопросы