我对这里的一切都很陌生。我试图付出更多努力使我的代码可读。我正在编写为多个文件运行函数的代码。我有超过 100 个文件,每个文件都包含带有时间(会话)的边缘列表,如下所示:
Header: Time Sender Receiver
1 1 2
1 1 3
2 2 1
2 2 1
3 1 2
3 1 2
该函数的目的是根据“时间”从每个文件中提取子网络。由于有 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
)。如果我一个一个地运行代码,它似乎可以工作。但是,如果我输入多个文件,它会为多个文件生成输出并停止工作。我无法弄清楚是什么导致了问题。