Положение значения в рассчитанном векторе из данных подмножества - PullRequest
0 голосов
/ 03 мая 2018

Я всюду искал это и еще не нашел полезного ответа:

У меня есть исходный фрейм данных:

> Ty <- c("c","v","c","c","v","v","c","c")
> y <- runif(8)
> x1 <- runif(8)
> x2 <- runif(8)
> x3 <- runif(8)
> df <- data.frame(Ty,y,x1,x2,x3)
> df
  Ty          y        x1        x2        x3
1  c 0.20837948 0.9990686 0.6081206 0.4800121
2  v 0.98047271 0.8098506 0.3377099 0.2677663
3  c 0.11320570 0.8201667 0.6102719 0.7521935
4  c 0.78059215 0.9227924 0.8973975 0.9731085
5  v 0.42921617 0.4732868 0.5234706 0.8788630
6  v 0.88079516 0.2566475 0.9642301 0.2265124
7  c 0.08974227 0.6505454 0.8664035 0.6288450
8  c 0.99710543 0.3626812 0.2148892 0.3996121

Мне нужно использовать только данные с Type = "C", поэтому я перехожу к его подмножеству:

> df.c <- subset(df,Ty=="c")
> df.c
  Ty          y        x1        x2        x3
1  c 0.20837948 0.9990686 0.6081206 0.4800121
3  c 0.11320570 0.8201667 0.6102719 0.7521935
4  c 0.78059215 0.9227924 0.8973975 0.9731085
7  c 0.08974227 0.6505454 0.8664035 0.6288450
8  c 0.99710543 0.3626812 0.2148892 0.3996121

Обратите внимание, что индекс позиции сохраняется из исходной матрицы df. После поднабора моей df матрицы мне нужно было построить регрессионную модель:

> reg <- lm(y~x1+x2+x3, data = df.c)
> pred <- predict(reg, df.c)
> pred
        1         3         4         7         8 
0.1020748 0.5735144 0.4673496 0.2027020 0.8433842 

После вызова pred он показывает исходные индексы позиции (1,3,4,7,8), но когда я вызываю нужную позицию индекса, например, pred[3], желая получить значение 0.5735144, вместо этого он дает мне значение в третьей позиции 0.4673496:

> pred[3]
        4 
0.4673496 

Как получить доступ к нужному индексу позиции, взятому из исходной матрицы df, в данном случае позиции 3?

1 Ответ

0 голосов
/ 03 мая 2018

Как отметил @JilberUrbina в комментарии, имена строк / имена векторов, возвращаемые predict(), на самом деле символьный вектор , поэтому pred["3"] должно получить то, что вы хотите.

  • Если p является целым числом, индексирование по pred[p] дает вам элемент pth в векторе;
  • , если p является символом (, но не фактором !), pred[p] дает вам элемент с именем , который соответствует содержимому p.

Если вы хотите удалить значение, проиндексированное символом, вы должны использовать эту (довольно неуклюжую) идиому:

p[names(p) != "3"]

т.е. p[-"3"] не работает ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...