如何停止 R Loop 多次存储同一个变量而不是一次
How to stop R Loop storing the same variable multiple times instead of just once
我有按年和季节划分的时间序列每日温度数据(SU = 夏季等)。 Season.Year 列允许分析气候年(使用前一年的 12 月作为冬季,保持趋势的季节性)。
样本:
Day Month Year maxtp Season.Year Season
1 20 8 2007 19.1 2007 SU
2 21 8 2007 17.6 2007 SU
3 22 8 2007 21.8 2007 SU
4 23 8 2007 20.0 2007 SU
5 24 8 2007 22.4 2007 SU
6 25 8 2007 21.2 2007 SU
7 26 8 2007 19.3 2007 SU
8 27 8 2007 17.5 2007 SU
9 28 8 2007 18.9 2007 SU
10 29 8 2007 18.3 2007 SU
11 30 8 2007 19.5 2007 SU
12 1 9 2007 19.8 2007 A
13 2 9 2007 19.2 2007 A
14 3 9 2007 18.9 2007 A
15 4 9 2007 20.4 2007 A
16 5 9 2007 21.2 2007 A
我想提取每年的所有冬天,用 2007 年到 2014 年冬天的所有温度值创建一个子集(和新数据集)。
我创建的 R-Loop(下方)执行此操作,但会重复数据(即 2008 年冬季 (W) 有 364 个值,而应该只有 90 个左右)
for( i in 2008:2014) {
for(j in 1:4) {
j = 1
data.sub <- subset(data, data$Season.Year == i & data$Season == s[j])
Winter <- rbind(Winter, data.sub)
}
}
谁能看出这个循环有什么问题?为什么子集存储了如此多的数据,而不只是给我 2008 年、2009 年、2014 年的所有冬季值?
每年每个冬天应该有大约 90 个数据点(总共大约 600 个值,而我得到超过 2500 个)。
我认为您的问题出在内部循环中修改 j
,因此对于 j
的四个值中的每一个,您都在提取 s[1]
数据.
无论如何,直接做应该更简单:
Winter <- subset(data, data$Season.Year %in% 2008:2014 & data$Season %in% s[1])
假设 s[1] 是冬天
我有按年和季节划分的时间序列每日温度数据(SU = 夏季等)。 Season.Year 列允许分析气候年(使用前一年的 12 月作为冬季,保持趋势的季节性)。
样本:
Day Month Year maxtp Season.Year Season
1 20 8 2007 19.1 2007 SU
2 21 8 2007 17.6 2007 SU
3 22 8 2007 21.8 2007 SU
4 23 8 2007 20.0 2007 SU
5 24 8 2007 22.4 2007 SU
6 25 8 2007 21.2 2007 SU
7 26 8 2007 19.3 2007 SU
8 27 8 2007 17.5 2007 SU
9 28 8 2007 18.9 2007 SU
10 29 8 2007 18.3 2007 SU
11 30 8 2007 19.5 2007 SU
12 1 9 2007 19.8 2007 A
13 2 9 2007 19.2 2007 A
14 3 9 2007 18.9 2007 A
15 4 9 2007 20.4 2007 A
16 5 9 2007 21.2 2007 A
我想提取每年的所有冬天,用 2007 年到 2014 年冬天的所有温度值创建一个子集(和新数据集)。
我创建的 R-Loop(下方)执行此操作,但会重复数据(即 2008 年冬季 (W) 有 364 个值,而应该只有 90 个左右)
for( i in 2008:2014) {
for(j in 1:4) {
j = 1
data.sub <- subset(data, data$Season.Year == i & data$Season == s[j])
Winter <- rbind(Winter, data.sub)
}
}
谁能看出这个循环有什么问题?为什么子集存储了如此多的数据,而不只是给我 2008 年、2009 年、2014 年的所有冬季值?
每年每个冬天应该有大约 90 个数据点(总共大约 600 个值,而我得到超过 2500 个)。
我认为您的问题出在内部循环中修改 j
,因此对于 j
的四个值中的每一个,您都在提取 s[1]
数据.
无论如何,直接做应该更简单:
Winter <- subset(data, data$Season.Year %in% 2008:2014 & data$Season %in% s[1])
假设 s[1] 是冬天