0

행렬에서 네트워크를 생성해야하는 소셜 네트워크 분석 할당 작업을하고 있습니다. 나는 학생들이 공통적으로 가지고있는 수업에 의해 어떤 것이 연결되어 있는지를 보여주는 매트릭스를 만들려고 노력하고 있습니다 (개인 - 사람 매트릭스). 원본 데이터를 행렬의 첫 번째 반복에 맞춰서 이제 행렬에 곱하려고합니다. t (m) %의 *의 %의 m에서 오류 : 나는 행렬 곱셈 나는이 오류 메시지가 코드를 실행하면t() % * % "를 사용하면 R 오류 메시지가 숫자/복소수 행렬/벡터 인수가 필요합니다.

names <- c("Tom", "Dick", "And", "Harry") 
class <- c("cs1", "cs2", "cs3", "cs1") 
count <- c(1, 1, 0, 1) 
df = data.frame (names, class, count) 
df2 <- spread(df, "class", "count") 

: 내 데이터 세트와 현재 행렬은 아래의 더 큰 버전입니다 필요 숫자/복잡한 매트릭스/벡터 인수.

m <- as.matrix(df2) 
m2 <- t(m) %*% m 

이전의는 SO 질문과 Matrix multiplication in R: requires numeric/complex matrix/vector arguments 숫자 또는 요소 값을 포함하는 데 필요한 매트릭스를 제안 답변, 그래서 아래의 코드를 추가하지만 동일한에게 오류 메시지가 있어요 :

df2 %>% mutate_if(is.factor, as.character) -> df2 
m <- as.matrix(df2) 
m2 <- t(m) %*% m 

사람이 할 수있는 경우를 내가 잘못 가고있는 곳/오류 메시지가 의미하는 것이 무엇인지 이해하도록 도와주세요. 감사하게 생각합니다. 고맙습니다!

P. ... 추한 코드에 대한 죄송 R.

답변

0

새로운이 도움이 될 수 있습니다 :

# fill NA with 0 
df2[is.na(df2)] <- 0 

# make row names the names of the people 
row.names(df2) <- df2$names 
df2 <- df2[,-1] 

m <- as.matrix(df2) 
m2 <- t(m) %*% m 
+0

감사합니다! 그 트릭을 했어 - 더 이상 오류 메시지 :) – melonyn

+0

Np. 제대로 작동했는지 체크 할 수 있습니다. 감사. – AidanGawronski

관련 문제