Я как бы новичок во всем здесь. Я попытался приложить больше усилий, чтобы сделать мой код доступным для чтения. Я пишу код для запуска функции для нескольких файлов. У меня есть более 100 файлов, и каждый файл содержит edgelist времени (сессии) следующим образом:Как построить сеть путем подмножества на основе периода времени
Header: Time Sender Receiver
1 1 2
1 1 3
2 2 1
2 2 1
3 1 2
3 1 2
Целью функции является извлечение подсетей из каждого файла на основе «Time». Поскольку существует 3 разных периода времени, каждый файл будет иметь 3 подсетей. Ниже приведен код, который я написал:
SubsetNetwork <-function (file) {
df = read.csv(file)
uniq <-unique(unlist(df$Time))
edgelist=list()
g=list()
for (i in 1:length(uniq)){
g <- lapply(split(df, df$Time), function(x) {
graph.edgelist(as.matrix(x[c("Sender","Receiver")]), directed = T)
})
edgelist[[i]]=get.edgelist(g[[i]])
filename=paste(fname, i, ".csv")
write.csv(edgelist[[i]], filename)
}
}
Этот код будет выполнять вышеуказанную функцию.
temp = list.files(pattern="*.csv")
for (i in 1:length(temp)){
file <-temp[i]
SubsetNetwork (file)
}
- входного файла = 626234T.csv
- Выходные файлы = 626234T1.csv, 626234T2.csv, 626234T3.csv.
Я продолжал получать ошибку (Error in g[[i]] : subscript out of bounds
). Если бы я запускал код один за другим, он казался рабочим. Однако, если я подал несколько файлов, он сгенерировал выходы для нескольких файлов и прекратил работу. Я не мог понять, что вызвало проблему.
Пожалуйста, прилагать больше усилий, чтобы сделать код для чтения (и воспроизводимым). Просто публикация скриншота без вызова библиотеки для не-базовых функций не является достаточным усилием. Вы также должны вывести вывод из 'dput (head (df))'. –
Я не уверен, что понимаю, что вы делаете, но это помогает: 'lapply (split (df, df $ Time), function (x) graph.edgelist (as.matrix (x [c (" Sender " , «Receiver»)]), direct = T)) '? ('df' - это датаграмма в конце (Time Sender и т. д.)). Вывод представляет собой список из 3 элементов типа IGRAPH D --- 3 2 -. –
жаль, что мой код не был доступен для чтения. Я не привык писать код. Я стараюсь учиться сам. @alexis_laz Спасибо. Думаю, ваш код поможет много. – user1710819