2016-02-25 2 views
0

Статистика студентка здесь. Мне было поручено объединить 2 набора значений, а затем объединить их для выполнения тестов перестановок. В этом примере я объединяю векторы в один, затем использую функцию sample(), чтобы вытащить половину значений, чтобы найти их среднее значение и сравнить его с другой половиной. Мне сказали, что я могу использовать отрицательную подписку, чтобы как-то вытащить непонятые значения и поместить их в другую переменную, чтобы я мог сравнивать средства.Создание выборочных непонятых значений с использованием отрицательного индексирования в R?

controls <- c(6.33, 1.65, -3.58, 3.3, -6.6, 3.29, 1.80, 1.80, 2.98) ## group 1 
redA <- c(6.84, -9.83, -0.02, -9.12, -0.07, -19.34, 3.97, -16.37, -21.02) ## group 2 
allscores <- c(controls, redA) ## combine vectors 
allscores ## check new vector 
controlIDs <- sample(allscores,9) ## pull out 9 random values 
otherIDs <- allscores[-controlIDs] ## get other 9 non-picked values 
difference <- mean(controlIDs) - mean(otherIDs) ## compare means 

Это ошибка, я получаю

Error in allscores[-controlIDs] : 
    only 0's may be mixed with negative subscripts 

Концептуально У меня было трудно понять, как OUR R способен выбрать самые невостребованное выборочные значения, используя отрицательный индекс когда Я думал, что образец запускается независимо.

Может ли кто-нибудь сказать мне, есть ли у меня код, каким-то образом смешавшимся здесь? В идеале это будет работать, поэтому его можно поместить в цикл for и запустить кучу раз, чтобы создать распределение значений. Поблагодарю любую помощь в обучении использованию отрицательного индекса, чтобы вытащить не выбранные значения в отдельный вектор. Вызов класса говорит, что весь вектор allscores является числовым, поэтому я не считаю, что это конфликт в типах данных, но я мог ошибаться.

Спасибо!

ответ

-1

Ошибка: вы выбрали значения из allscores, пока вам нужны индексы значений для их удаления.

Таким образом, вы можете использовать вместо:

... 
idx <- sample(seq_along(allscores),9) ## take 9 random values 
controlIDs <- allscores[idx] ## pull out these 9random values 
otherIDs <- allscores[-idx] ## get other 9 non-picked values 
... 
+1

Спасибо за вашу помощь. Тем не менее, когда я запускаю это, мне кажется, что мне присваивается индекс #s для значений, а не самих значений. Е. > controlIDs <- образец (seq_along (allscores), 9) > controlIDs [1] 2 8 9 10 3 14 13 16 17 > Средние (controlIDs) [1] 10,22222 Любое наведение на получение средств вместо индексов? –

+0

*** Мне удалось понять это. Я только что создал новую переменную минус отрицательный индекс и дал мне другие значения. Спасибо за вашу помощь! :) **controlIDs <- sample (seq_along (allscores), 9) elseIDs <- allscores [-controlIDs] controlyes <-allscores [controlIDs] Это грязно, но это будет делать то, что мне нужно. –

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