Динамически получать значения из матрицы - PullRequest
1 голос
/ 22 мая 2019

Я хочу добавить новый столбец в мой фрейм данных на основе значений из матрицы перехода.

Я пробовал это решение [ R извлекать значения из матрицы с заданным кадром данных x и y , но, похоже, он работает для чисел как индексов, и у меня есть имена символов для моих строк и столбцов.

Например:

r
x<- 
cbind(c(0.3,0.35,0.35,0),c(0.2,0.2,0.4,0.2)
,c(0,0.6,0.1,0.3),c(0.5,0.25,0.25,0))
colnames(x) <- c("A","B","C","D")
rownames(x) <- c("A","B","C","D")

y<-as.data.frame(cbind(c(1,2,3,4,5,6)
,c("A","A","B","A","B","A"),c("D","C","C","D","D","D")))
colnames(y) <- c("id","e1","e2")

index_df = y%>% select(e1,e2)
colnames(index_df)<-c('rows','cols')

y[as.matrix(index_df)]

Я получаю эту ошибку

Ошибка в as.matrix (x) [i]: индекс за пределами

Я хочу добавить имена столбцов l1-y фрейма данных со значениями из матрицы

   id e1 e2 l1  
1  1  A  D  0.50  
2  2  A  C  0.0  
3  3  B  C  0.2  
4  4  A  D  0.50  
5  5  B  D  0.25  
6  6  A  D  0.50  

1 Ответ

1 голос
/ 22 мая 2019

Нам нужно использовать правильный набор данных для извлечения значений.Здесь у не совпадают строки или столбцы.Это 'x'

y$l1 <- x[as.matrix(index_df)]
y$l1
#[1] 0.50 0.00 0.60 0.50 0.25 0.50
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...