Спасибо @ emilliman5 за дополнительные вопросы.
Мой настоящий набор данных - это несбалансированная панель с 15-летним периодом времени.Я был предназначен для проведения сетевых графиков, используя часть полных данных.Правило вычитания - это трехлетний период прокатки (фактически с некоторыми другими условиями, но я только что попросил прокатку здесь).Поэтому я планировал сначала вызвать скользящие подвыборки и провести графики.Надеюсь, теперь это немного понятно.
Приведенные выше данные были просто пробным образцом.4-летний диапазон должен генерировать два графика (2001-2003, 2002-2004), а 15-летний должен составить 13 графиков.Реальная весовая переменная не называется весом, но я согласен, что строка «as.numeric (network [, 3])» является избыточной.(Теперь я понимаю, что пример, который я сделал, не был хорош ... извините ...)
Я получил кое-кого, кто помог мне с этим сейчас, поэтому я просто выложу некоторые коды.Надеюсь, что это может помочь другим людям.
Метод 1: вызвать подвыборки по функциям.Это избавит меня от создания вложенных циклов вместе с построением графиков.
# Function: conditions for substracting; here rolling-year only
f <- function(j){
df <- subset(em, year>=j & year <= j+2)
}
print (f(2001)) # Test function output, print-out
# Rolling by location and year, graph-plotting
for (j in 2001:2002){
sdf = f(j)
nw <- graph.data.frame(sdf, directed = TRUE)
plot(nw, edge.width = E(sdf[[j]])$weight)
}
Метод 2: Используйте циклы - отлично подходит для одного или двух условий вычитания, но было бы немного неуклюже для большего.
c <- 2001 # a number for year count
sdf <- {} # Set an empty set to save subsets
for (j in 2001:2002){
df_temp <- subset(em, year>=j & year<=j+2)
print(nrow(df_temp)) # To check the subset, not necessary
sdf[[c]] <- cbind(df_temp)
nw <- graph.data.frame(sdf[[c]], directed = TRUE)
plot(nw, edge.width = E(sdf[[c]])$weight)
c <- c + 1
}