Я пытаюсь построить в базе 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! Я включил фотографию того, что на самом деле делают мои данные.
Думая, что вектор 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
для каждого ПК. Я буду здесь вечно, чтобы это распечатать.
Любые предложения о том, что делать ?????