【发布时间】:2018-09-30 21:01:58
【问题描述】:
我遇到了关于从 R 中的嵌套循环中保存图表和统计信息的问题。 我得到的是社交网络的不平衡面板数据。在下面的示例中,从 2001 年到 2003 年,它在 3 个位置具有网络连接。我的目标是生成网络图以及每个位置每年的一些统计数据(因此示例中有 9 个图表和 9 个 SNA 统计数据)。但是我对事先设置结果容器感到困惑,尤其是当循环嵌套时。如果有人能提供帮助,我将不胜感激。
> # import file
> el <- read.csv(file.choose(), header = TRUE )
> print(el) # example data
bname sname year loc
1 a b 2001 1
2 a c 2001 1
3 a b 2002 1
4 b c 2002 1
5 b e 2002 1
6 e a 2003 1
7 b a 2003 1
8 a c 2003 1
9 b e 2001 2
10 a c 2002 2
11 a b 2002 2
12 b c 2002 2
13 c e 2002 2
14 c e 2003 2
15 b e 2003 2
16 a b 2003 2
17 a b 2001 3
18 a c 2001 3
19 a e 2001 3
20 a d 2001 3
21 a b 2002 3
22 b c 2002 3
23 b c 2003 3
> # Import objects
> loc <- as.vector(unique(el$loc))
> year <- as.vector(unique(el$year))
> start <- 2001
> end <- 2003
> # Result container
> mylist <- vector('list', length(loc)) # final list
> acc <- paste("") # vector for avg. cluster coef.
> sna <- cbind(year, acc) # matrix for each location
> # Loop, i for location, acc. as example
> for (i in unique(loc)) {
+
+ for (j in start:end) {
+ el_s <- subset(el, loc==i & year==j) # pick subsample
+ edge <- el[order(el_s$bname, el_s$sname),]
+ nw <- graph_from_data_frame(d= el_s, directed = T)
+
+ # graph plotting
+ png("network"i""j".jpg")
Error: unexpected symbol in:
" # graph plotting
png("network"i" # Error here -- Can the name be save in "network_i_j" mode?
> plot(nw)
> dev.off()
null device
1
+
+ # SNA statistics
+ sna[j,"acc"] <- transitivity(nw, type = "average") # Error here
+
+ }
+
+ mylist[[i]] <- sna
+ }
Error in `[<-`(`*tmp*`, j, "acc", value = transitivity(nw, type = "average")) :
subscript out of bounds
我试图将previous post 中的方法用于双循环,我想我在将结果保存在内循环方面感到困惑。另外,保存图的时候,不知道R能不能在“network_location_year”模式下保存名字?我按照 Stata 的方式做到了,所以我猜它可能不适用于 R。
再次感谢您!
【问题讨论】:
标签: r graph save nested-loops