我是 R 的新手,并接到了一个使用 R 做一些基础研究的任务 我导入了一个csv文件,其中包含风向和风速的数据,并希望根据风向拆分风速
所以我创建了这段 R 代码
north.ls = list()
east.ls = list()
south.ls = list()
west.ls = list()
i = as.integer(1)
print("start")
for (i in 1:length(DD)) {
if (DD[i] >=315 & DD[i] <= 360 | DD[i] >= 1 & DD < 45) {
north.ls[[i]] = as.integer(FH[i])
print("nord")
}
if(DD[i] >=45 & DD[i] < 135){
east.ls[[i]] = as.integer(FH[i])
print("east")
}
if(DD[[i]] >= 145 & DD[i] < 225){
south.ls[[i]] = as.integer(FH[i])
print("south")
}
if(DD[[i]] >=225 & DD[i] < 315){
west.ls[[i]] = as.integer(FH[i])
print("west")
}
}
这在将正确的速度放在正确的列表中时工作正常,但每次条件不正确时,列表仍然会获得一个空值,所以我在列表中有很多空值。问题是什么,我该如何解决?
我希望你能理解我的解释
提前致谢
当您在位置 [i] 的列表上创建一个新项目而没有在以前位置中的项目时,所有这些位置都会获得 NULL。
这里有一种稍微好一点的方式来生成你正在尝试做的事情(我正在对你的数据结构和目标进行一些有根据的猜测(,而不引入这些 NULL:
north.ls<-FH[(DD>=315 & DD <= 360) | (DD >= 1 & DD < 45)]
east.ls<-FH[DD>=45 & DD < 135]
south.ls<-FH[DD>=135 & DD < 235]
west.ls<-FH[DD>=235 & DD < 315]
这将为您提供四个向量,这些向量根据 DD 中的数据将 FH 中的数据划分为北、东、南和西。四个列表中的每个列表的长度都不等于 FH 或 DD(或彼此(的长度,并且除非它们已经在 FH 中,否则不应引入 NULL。