Участок в R не распознает числа pch - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь построить в базе R с регулярной plot() фкн. Однако, передавая вектор, какой pch использовать, он не будет отображать pch, он будет изображать только число «1» вместо формы pch, которую я вызываю.

Генерация некоторых данных (мои реальные данные содержат более 400 строк как для нагрузки, так и для мета-объектов:

loads <- data.frame(PC1 = c(11.32, 13.18, 12.82, 24.70), PC2 = c(-23.05,  -24.71, -20.28, 10.09))
row.names(loads) <- c("100_A", "100_B", "100_C", "100_Orig")
meta <- data.frame(pch = c(17, 17, 17, 16), color = c("red", "red", "blue", "blue"))
row.names(meta) <- row.names(loads)

На участок:

x <- loads[, 1] ; y <- loads[, 2]
pch <- meta$pch
col <- meta$color

plot(x, y,
 col = col, pch = pch, cex = 2, lwd = 4,
 xlab = paste("PC1"), ylab = paste("PC2"))

Теперь, это будет график правильного цвета (красный и синий) в том порядке, в котором они у меня есть в векторе; реальная проблема становится сюжетом ПК. Вместо круга (pch = 16) или треугольника (pch = 17) вместо этого он изображает красное или синее число 1! Я включил фотографию того, что на самом деле делают мои данные. Not recognizing pch code

Думая, что вектор pch, который я передаю, не может иметь кавычек вокруг него, я удалил кавычки со следующим кодом:

pch <- meta$pch
pch <-as.vector(noquote(pch))
class(pch)
[1] "character"

Тем не менее, это приводит к тем же результатам (получение графика № 1). Интересно, что при использовании этого кода он работает нормально. Все мои цвета превращаются в синий, и я получаю красивые синие круги.

plot(x, y,
 col = "blue, pch = 16, cex = 2, lwd = 4,
 xlab = paste("PC1"), ylab = paste("PC2"))

Это говорит мне о том, что функция plot не распознает мой длинный вектор, состоящий из смешанных чисел pch 16 и 17.

В качестве альтернативы, если я использую функцию rep для генерации вектора pch, тест показывает, что он работает нормально. Но у меня более 400 рядов. Я не могу вручную ввести rep для каждого ПК. Я буду здесь вечно, чтобы это распечатать.

Любые предложения о том, что делать ?????

1 Ответ

1 голос
/ 02 июля 2019

Попробуйте определить col как символ, а pch как цифру:

plot(x, y,
     col = as.character(col), pch = as.numeric(pch), cex = 2, lwd = 4,
     xlab = paste("PC1"), ylab = paste("PC2"))
...