Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于时间段的子集网络构建_R_List_Matrix - Fatal编程技术网

R 基于时间段的子集网络构建

R 基于时间段的子集网络构建,r,list,matrix,R,List,Matrix,我对这里的一切都不熟悉。我试图投入更多的精力使我的代码可读。我正在编写为多个文件运行函数的代码。我有100多个文件,每个文件包含edgelist和时间(会话),如下所示: Header: Time Sender Receiver 1 1 2 1 1 3 2 2 1 2 2 1 3 1 2 3 1 2 该函数的目的是

我对这里的一切都不熟悉。我试图投入更多的精力使我的代码可读。我正在编写为多个文件运行函数的代码。我有100多个文件,每个文件包含edgelist和时间(会话),如下所示:

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)
  }
}   

SubsetNetwork如果您的代码对一个文件运行良好,则您收到的错误表明您的代码没有问题。只有当唯一时间点的数量小于1时,才应该得到
g[[i]]
超出范围


我怀疑发生的是一个格式不正确或损坏的文件缺少一个“时间”头,
temp正在提取该头文件。请在使代码可读(和可复制)方面投入更多精力。仅仅发布一个屏幕截图而没有对非基本函数进行库调用是不够的。您还应该发布dput(head(df))的输出。
。我不确定我是否理解您在做什么,但这是否有帮助:
lappy(split(df,df$Time),function(x)graph.edgelist(as.matrix(x[c(“Sender”,“Receiver”)),directed=T))
?(
df
是最后的数据帧(时间发送器等))。输出是一个包含3个类似IGRAPH D--3 2--
-的元素的列表。很抱歉,我的代码不可读。我不习惯写代码。我试着自己学习@谢谢你。我想你的代码会有很大帮助。非常感谢你的评论。因为我试图自己学习R,所以我使用了别人的代码片段(即使我也不知道他们真正做了什么)。不管怎样,多亏了你,我学到了很多。不客气!我注意到,对于刚开始学习的人来说,有很多先进的概念,所以我想我应该帮点忙:)
temp = list.files(pattern="*.csv") 
for (i in 1:length(temp)){      
  file <-temp[i]              
  SubsetNetwork (file)
}    
SubsetNetwork <-function (file) {
  df = read.csv(file)
  uniq <-unique(unlist(df$Time))
  uniq <-unique(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)
  }
}
  g <- lapply(split(df, df$Time), function(x) {
    graph.edgelist(as.matrix(x[c("Sender","Receiver")]), directed = T)
  })
  edgelist <- lapply(g, get.edgelist)

  for (i in 1:length(uniq)){
    filename=paste(fname, i, ".csv")
    write.csv(edgelist[[i]], filename)
  }
}
SubsetNetwork <-function (file) {
  df = read.csv(file)
  g <- lapply(split(df, df$Time), function(x) {
    graph.edgelist(as.matrix(x[c("Sender","Receiver")]), directed = T)
  })
  edgelist <- lapply(g, get.edgelist)

  for (i in 1:length(g)){
    filename=paste0(fname, i, ".csv")
    write.csv(edgelist[[i]], filename)
  }
}