Если «NA не разрешены в подписанных назначениях», как мне сравнить и сопоставить значения таблицы с более длинным списком имен в R? - PullRequest
0 голосов
/ 05 марта 2020

Спасибо за помощь мне здесь! У меня есть список из 71 483 имен пользователей («ВСЕ») и фрейма данных («ActDred») с данными Twitter.

Я хочу подсчитать, как часто пользователь а) отправлял твит и б) отвечал на пост, затем добавив этот номер в список пользователей. Некоторые пользователи не пишут твиты и не отвечают, я бы добавил для них NA.

Это то, что я сделал, и это сработало для а), но не для б). Для б) я получаю сообщение об ошибке: «NA не допускаются в подписанных назначениях».

#a)
#Select only Tweet edges
Tw<-ActDred[ActDred$Relationship=="Tweet",]
#Number of tweets of each user
NTw<-table(Tw$`Vertex 1`)

#Match number of tweets to list of all nodes
SA_NumTw <- rep(NA, length(ALL))
SA_NumTw[match(names(NTw), ALL)]<-NTw

#b)
#Select only Reply edges
Re <- ActDred[ActDred$Relationship=="Replies to",]
#Number of replies of each user
NRe<-table(Re$`Vertex 1`)

#Match number of replies to list of all nodes
SA_NumRe <- rep(NA, length(ALL))
SA_NumRe[match(names(NRe), ALL)] <- NRe

Для б) я получаю

«Ошибка в SA_NumRe [ which] <- NRe: NA не разрешены в подписанных назначениях "</p>

У кого-нибудь есть идея, что я здесь скучаю и почему это работает для a), но не для b)?

Большое спасибо!

1 Ответ

0 голосов
/ 05 марта 2020

Я нашел проблему! Было несколько пользователей, которые ответили, но их нет в списке ВСЕХ. Сначала я удалил их, а затем продолжил, и это сработало:)

Вот что я сделал:

Re <- ActDred[ActDred$Relationship=="Replies to",]
RbutA <- setdiff(Re$`Vertex 1`, ALL) 
# there are 19 repliers that are not in the ALL list, hence I get the error and need to eliminate the 19 users first
Re2 <- Re[Re$`Vertex 1` %in% ALL,1:8]
#Number of replies of each user
NRe<-table(Re2$`Vertex 1`)

#Match number of replies to list of all nodes
SA_NumRe <- rep(NA, length(ALL))
SA_NumRe[match(names(NRe), ALL)] <- NRe

Теперь я больше не получаю сообщение об ошибке:)

...