1
我有下面的代碼,但它似乎很長時間 - 因爲我對每個文件都做了同樣的事情,我認爲必須有一種方法來簡化,但是它暗示我目前!任何幫助一如既往的讚賞:任何簡化R代碼的方法?
.LVB.SF.1.1 <- read.csv("LVB_SF_1-1.csv", header=T, sep=","); .LVB.SF.1.6 <- read.csv("LVB_SF_1-6.csv", header=T, sep=",")
.LVB.SF.1.2 <- read.csv("LVB_SF_1-2.csv", header=T, sep=","); .LVB.SF.1.7 <- read.csv("LVB_SF_1-7.csv", header=T, sep=",")
.LVB.SF.1.3 <- read.csv("LVB_SF_1-3.csv", header=T, sep=","); .LVB.SF.1.8 <- read.csv("LVB_SF_1-8.csv", header=T, sep=",")
.LVB.SF.1.4 <- read.csv("LVB_SF_1-4.csv", header=T, sep=","); .LVB.SF.1.9 <- read.csv("LVB_SF_1-9.csv", header=T, sep=",")
.LVB.SF.1.5 <- read.csv("LVB_SF_1-5.csv", header=T, sep=","); .LVB.SF.2.0 <- read.csv("LVB_SF_2.csv", header=T, sep=",")
# Interpolate the missing monthly values - linear interpolation of above
x <- zoo(.LVB.SF.1.1); .LVB.SF.1.1 <- as.data.frame(na.approx(x)); x <- zoo(.LVB.SF.1.2); .LVB.SF.1.2 <- as.data.frame(na.approx(x))
x <- zoo(.LVB.SF.1.3); .LVB.SF.1.3 <- as.data.frame(na.approx(x)); x <- zoo(.LVB.SF.1.4); .LVB.SF.1.4 <- as.data.frame(na.approx(x))
x <- zoo(.LVB.SF.1.5); .LVB.SF.1.5 <- as.data.frame(na.approx(x)); x <- zoo(.LVB.SF.1.6); .LVB.SF.1.6 <- as.data.frame(na.approx(x))
x <- zoo(.LVB.SF.1.7); .LVB.SF.1.7 <- as.data.frame(na.approx(x)); x <- zoo(.LVB.SF.1.8); .LVB.SF.1.8 <- as.data.frame(na.approx(x))
x <- zoo(.LVB.SF.1.9); .LVB.SF.1.9 <- as.data.frame(na.approx(x)); x <- zoo(.LVB.SF.2.0); .LVB.SF.2.0 <- as.data.frame(na.approx(x))
# Create rowmeans columns for all the above
.LVB.SF.1.1$Mean <- rowMeans(.LVB.SF.1.1[,c(2:4)]); .LVB.SF.1.6$Mean <- rowMeans(.LVB.SF.1.6[,c(2:4)])
.LVB.SF.1.2$Mean <- rowMeans(.LVB.SF.1.2[,c(2:4)]); .LVB.SF.1.7$Mean <- rowMeans(.LVB.SF.1.7[,c(2:4)])
.LVB.SF.1.3$Mean <- rowMeans(.LVB.SF.1.3[,c(2:4)]); .LVB.SF.1.8$Mean <- rowMeans(.LVB.SF.1.8[,c(2:4)])
.LVB.SF.1.4$Mean <- rowMeans(.LVB.SF.1.4[,c(2:4)]); .LVB.SF.1.9$Mean <- rowMeans(.LVB.SF.1.9[,c(2:4)])
.LVB.SF.1.5$Mean <- rowMeans(.LVB.SF.1.5[,c(2:4)]); .LVB.SF.2.0$Mean <- rowMeans(.LVB.SF.2.0[,c(2:4)])
# RMSE Calculation
LVB.RMSE.TWS.1.1 <- rmse(LVB.OBS.TWS.LAG_ONLY[,1], .LVB.SF.1.1[,5]); LVB.RMSE.TWS.1.6 <- rmse(LVB.OBS.TWS.LAG_ONLY[,1], .LVB.SF.1.6[,5])
LVB.RMSE.TWS.1.2 <- rmse(LVB.OBS.TWS.LAG_ONLY[,1], .LVB.SF.1.2[,5]); LVB.RMSE.TWS.1.7 <- rmse(LVB.OBS.TWS.LAG_ONLY[,1], .LVB.SF.1.7[,5])
LVB.RMSE.TWS.1.3 <- rmse(LVB.OBS.TWS.LAG_ONLY[,1], .LVB.SF.1.3[,5]); LVB.RMSE.TWS.1.8 <- rmse(LVB.OBS.TWS.LAG_ONLY[,1], .LVB.SF.1.8[,5])
LVB.RMSE.TWS.1.4 <- rmse(LVB.OBS.TWS.LAG_ONLY[,1], .LVB.SF.1.4[,5]); LVB.RMSE.TWS.1.9 <- rmse(LVB.OBS.TWS.LAG_ONLY[,1], .LVB.SF.1.9[,5])
LVB.RMSE.TWS.1.5 <- rmse(LVB.OBS.TWS.LAG_ONLY[,1], .LVB.SF.1.5[,5]); LVB.RMSE.TWS.2.0 <- rmse(LVB.OBS.TWS.LAG_ONLY[,1], .LVB.SF.2.0[,5])
謝謝!
嘗試一個循環,也許? – Frank
您可以將所有文件讀入列表中,然後執行列表中的所有操作。即'files <--list.files(pattern ='LVB_SF _。*。csv'); lst < - lapply(files,read.table,header = TRUE,sep =「,」); lapply(lst,function(x)zoo(..))' – akrun
非常好 - 我會試試這個 - 非常感謝@akrun –