У меня есть два векторы чисел равной длины. Как я вывожу первый вектор на печать при использовании соответствующего элемента во втором векторе как символ печати? (Фон: Я отсортировал первый столбец, и второй столбец содержит исходные индексы. Я хочу использовать индексы в качестве печатаемого символа так, чтобы я видел, какие точки данных являются выбросами, так как каждое число представляет одно выполнение данных).
> x
$x
[1] 25 29 30 34 38 572 700 733 870 879 899 934 982 1054 1135 1258
[17] 1315 1491 1685 1700 2069 2131 2284 3498 3506 4467 4656 5633 6642 8348
$ix
[1] 23 3 18 30 13 8 4 14 11 17 12 29 9 15 19 16 7 1 20 2 6 28 21 10 5 22 24 26
[29] 25 27
Первый вектор является x$x, второй вектор является x$ix (результаты вызова вида с index.return = TRUE)
Я попробовал график (x$x, pch=str (x$ix)), но это рассматривает x$ix численно. Если бы это был Python, то я сделал бы что-то как строки = [ул. (x) для x в x$ix]. но это - R, и я забыл большую часть того, что я раньше знал.
Я нашел, что можно сделать as.character (x$ix) для получения строк,
> as.character(x$ix)
[1] "23" "3" "18" "30" "13" "8" "4" "14" "11" "17" "12" "29" "9" "15" "19" "16"
[17] "7" "1" "20" "2" "6" "28" "21" "10" "5" "22" "24" "26" "25" "27"
и я могу использовать это в качестве входа к pch. Но только первый символ используется (и согласно документам, это нормально).
Я знаю, что существует способ сделать это; я сделал это в колледже. Но я не могу ни за что в жизни помнить, как я сделал это.
Это должно сработать:
x = 1:4
y = x
plot(x, y, ann=F, axis=F, col="blue", pch=16)
text(x, y, labels=c("1st", "2nd", "3rd", "4th"), col="red", pos=c(3,4,4,1), offset=0.6)
Просто преобразуйте свой вектор без данных (тот, который содержит метки) в вектор символов: labels = as.character (label_vector)
, а затем замените его третьим аргументом в строке 4 выше.
Функция «Текст» довольно универсальна из-за различных аргументов, которые вы можете передавать - например, (как в приведенном выше примере) вы можете установить цвет текста, отличный от цвета ваших точек данных, используя «col»; Вы также можете указать положение (относительно точки данных, аннотированной данной текстовой меткой) для каждой текстовой метки отдельно. Часто бывает полезно, чтобы текстовые метки, например, не перекрывали одну из осей, что и произошло при первом запуске этого примера без установки «pos». Итак, установив 'pos' (как c (3, 4, 4, 1)), я установил положение текстовых меток как «вверху», «вправо», «вправо» и «внизу» - перемещая первые данные направьте вверх, чтобы он не попал в нижнюю ось X, и переместите четвертую ось вниз, чтобы она не попала в верхнюю ось. Кроме того, используя «смещение» (значение по умолчанию - 0,5), вы можете указать величину корректировки положения.
Вот способ сделать это с помощью пакета ggplot2
:
library(ggplot2)
x <- rnorm(10)
y <- rnorm(10)
labs <- 1:10
ggplot()+geom_text(aes(x=x,y=y,label=labs))