我有一个非常基本的循环问题:
我有一个矩阵(365x20)。因此,二十年来我每天都有降雨数据。
我需要对矩阵进行切片以进行分析的后续步骤,我这样做了:
year1 <- as.vector(Rainfall_data$year1)
year2 <- as.vector(Rainfall_data$year2)
...
year20 <- as.vector(Rainfall_data$year20)
这总共给了我20个单个1x365向量。
现在,我想对转换的降雨数据做同样的事情,以获得包含所有二十年当天价值的向量。因为这意味着要做
as.vector(t_Rainfall_data$day1-365)
我想写一个循环。这些列称为day1到day 365. t_Rainfall_data
将是转置矩阵。主要目标是总共获得365个单个1x20向量。
我尝试了几种方法,但都失败了。
答案 0 :(得分:0)
评论是正确的:您要对向量day1
执行的任何操作都可以使用t_Rainfall_data$day1
(或可能使用Rainfall_data[1,]
)完成,最好将切片放入当你用它做某事而不是从中创建大量冗余向量时,数据帧。同样,即使您需要一堆对象,处理对象列表也几乎总是比创建单独的命名对象更容易。所有这一切,这里是如何得到你所要求的:
与注释一样,您可以使用
返回向量列表lapply(seq_len(nrow(Rainfall_data)), function(i) Rainfall_data[i, ])
如果您更喜欢循环,并创建对象而不是返回列表,您可以执行类似
的操作for(i in 1:nrow(Rainfall_data){
assign(paste0("day",i),as.vector(t_Rainfall_data[,paste0("day",i)]))
}
assign
将创建一个以传递给它的字符串命名的对象,该对象包含第二个参数。