2013-11-11 4 views
1

Я пытаюсь построить первые два столбца друг против друга матрицы Y и назначить разные точки данных различными формами и цветами в зависимости от того, к какой группе они принадлежат в 12-й столбец моего набора данных. Ниже мой код:Построение различных фигур для точек данных, принадлежащих к разным группам, в R

X <- as.matrix(course[,1:11]) 
S <- cov(X) 
l <- eigen(S)$values 
e <- eigen(S)$vector 
Y <- X %*% e 

plot(Y[,1:2], 
    xlab = "PC1", 
    ylab = "PC2", 
    pch = c(1, 17, 8)[as.numeric(course[,12])], # different 'pch' types 
    main = "Plot of first 2 Principle Components", 
    col = c(1, 8, 1)[as.numeric(course[,12])] 
    ) 

«курс» это набор данных, я работаю с, и Y есть матрица я заинтересован в использовании для моего участка. Однако одна из групп, на которых я основываю свою маркировку, - это в основном отсутствующие значения или «NA». Я не могу использовать as.numeric(), поскольку это не относится к значениям «NA» как числовым.

Когда я запускаю код из графика, я получаю два набора значений, и он полностью игнорирует те для NA.

Я очень благодарен за помощь.

ответ

1

Вы должны быть способны создать вектор значений pch до звонка plot(). Например, вы можете сделать это с помощью ?ifelse. Скорее всего, будет удобно иметь категорию с NA s в качестве окончательного еще, так что вам не потребуется сложный согласованный аргумент. Сохраните это в переменной (вы можете назвать ее myPch), а затем используйте эту переменную в вызове функции. То есть

# assuming there are 3 courses: "A", "B", & "C", but some C's are NA's 
myPch <- ifelse(course[,12]=="A", 1, ifelse(course[,12]=="B", 17, 8)) 
plot(..., pch=myPch, ...) 
+0

Но pch - аргумент сюжета, как мне пойти, указав вектор, назначающий определенные значения pch для разных значений. Кроме того, я пробовал аргумент if else следующим образом: курс [, 12] <- ifelse (is.na (курс [, 12]), 0, курс [, 12]) , но он все еще не " т работы. Я попытался перемаркировать его как «отсутствующий» вместо «0», но не повезло. Я получаю только два разных типа очков, тогда как я хочу три. –

+0

Вы действительно не предоставили [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example), поэтому я ограничен в том, что я может показать вам, но я постараюсь что-то придумать, и мы увидим, достаточно ли этого, чтобы получить эту идею. – gung

+0

курс <- read.table ("course_happy_nomiss.txt", header = TRUE) уровней (курс $ Год) <- список (MSc_4 = c ("MSc", "4"), "3" = c ("3 «)) > Конечно [12] [1] 3 3 MSc_4 MSc_4 3 MSc_4 MSc_4 3 3 3 3 3 3 3 [16] 3 3 3 MSc_4 MSc_4 MSc_4 3 3 3 3 3 MSc_4 3 MSc_4 [31] 3 3 3 3 3 3 3 MSc_4 3 MSc_4 MSc_4 MSc_4 3 [46] MSc_4 3 3 3 MSc_4 MSc_4 3 3 MSc_4 MSc_4 MSc_4 [61] MSc_4 MSc_4 3 Уровни: MSc_4 3 –

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

  • Нет связанных вопросов^_^