r - 从嵌套循环中保存图形和统计信息
问题描述
我遇到了关于从 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
我试图将上一篇文章中的方法用于双循环,我想我在将结果保存在内循环方面感到困惑。另外,保存图的时候,不知道R能不能在“network_location_year”模式下保存名字?我以Stata的方式做到了这一点,所以我想它可能不适用于R。
再次感谢高级!
解决方案
这是格式化文件名的问题。打开 png 设备时,您应该使用
png(sprintf("network_%s_%s.png", i, j))
反而。
而对于这条线,
sna[j,"acc"] <- transitivity(nw, type = "average")
你得到下标超出范围,因为 j 在 2001 和 2003 之间,而不是 1 到 3。你会想要
sna[sna$year == j,"acc"] <- transitivity(nw, type = "average")
反而。
顺便说一句,如果你想要 jpg 而不是 png,你可以使用
jpeg(sprintf("network_%s_%s.jpg", i, j))
推荐阅读
- python - Python:无法展开列表
- c# - 如何检查变量是否为字符串
- d3.js - d3-zoom mouseup 事件解决方法
- python-3.x - 如何使代码在第一个链接之后跟随另一个链接?
- java - 如何在 Android HtmlCompat.fromHtml() 创建 Spanned 后停止 EditText 显示 javascript
- html - 无法在所选链接中保留 CSS 样式
- angular - combineLatest 仅在第一次发出数据
- excel - 当工作表中的值更改时从 Module1 调用函数
- docker - docker run/start:一遍又一遍地使用“run”命令对磁盘空间有显着影响吗?
- python - Pip 错误:无法识别选项 --single-version-externally-managed