Я пытаюсь создать простой фрейм данных, который содержит информацию о том, что авторы и их соответствующие документы. У меня есть матрица, которая содержит идентификаторы авторов в виде строк и идентификаторы бумаги в качестве столбцов. Эта матрица содержит 1 и 0, где 1 указывает, что автор работал над этим документом. Например, если A2P [1,1] == 1, это означает, что автор с идентификатором 1 работал над документом с идентификатором 1.
Я пытаюсь преобразовать эту матрицу в простой фрейм данных, содержащий все эти отношения, то, что просто содержит идентификаторы авторов и документы, над которыми они работали. Например,
au_ID P_ID
1 1
1 12 # Author 1 has worked on both paper 1 and 12
2 1 # Author 2 has also worked on paper 1, in addition to papers 2 and 3.
2 2
2 3
...
Вот что я делаю:
list1 <- list()
list2 <- list()
# Rows are Author IDs
# Columns are Paper IDs
for (row in 1:nrow(A2P)){
for (col in 1:ncol(A2P)){
if (A2P[row,col] == 1){
list1 <- append(list1, row)
list2 <- append(list2, col)
}
}
}
authorship["au_ID"] = list1
authorship["P_ID"] = list2
У меня возникают проблемы с быстрым выполнением этого кода. Бегать вечно, теперь двадцать минут. Я думаю, что это как-то связано с добавлением каждого значения строки и столбца в каждый из списков, но я не уверен.
Любая помощь будет принята с благодарностью! Большое вам спасибо!