У меня есть 11 файлов данных Excel, которые я хотел бы открыть, обработать и, наконец, построить в соответствии с теоретическими данными. Я могу сделать это для файла Excel отдельно, но я хотел бы сделать код короче, выполнив это в al oop. Мои имена файлов данных от S00.xlsx до S10.xlsx (11 файлов). Я использую следующее для чтения каждого файла:
library('readxl')
SS00 <- read_excel("S00.xlsx", sheet = "Bridge Object Girder Forces", skip = 3, col_names = FALSE)
Мне нужно обработать каждый файл данных, как показано ниже:
S00_shear <- data.frame(S00[,5],SS00[,8],S00[,12])
names(S00_shear) <- c("Girder", "Load", "Shear")
# Split data for single lane loaded and multi lane loaded
S00_Shear_multi.lane <- S00_shear[which(S00_shear$Load == "LL-1"),]
S00_Shear_single.lane <- S00_shear[which(S00_shear$Load == "LL-Single"),]
# Split data for the exterior girders and interior girders
S00_Shear.ext_multi.lane <- subset(S00_Shear_multi.lane, Girder %in% c("Left Exterior Girder",
"Right Exterior Girder"))
S00_Shear.int_multi.lane <- subset(S00_Shear_multi.lane, Girder %in% c("Interior Girder 1",
"Interior Girder 2",
"Interior Girder 3"))
S00_Shear.ext_single.lane <- subset(S00_Shear_single.lane, Girder %in% c("Left Exterior Girder",
"Right Exterior Girder"))
S00_Shear.int_single.lane <- subset(S00_Shear_single.lane, Girder %in% c("Interior Girder 1",
"Interior Girder 2",
"Interior Girder 3"))
# Find the maximum shear values
S00_Max.Shear.ext_multi.lane <- max(S00_Shear.ext_multi.lane$Shear)
S00_Max.Shear.int_multi.lane <- max(S00_Shear.int_multi.lane$Shear)
S00_Max.Shear.ext_single.lane <- max(S00_Shear.ext_single.lane$Shear)
S00_Max.Shear.int_single.lane <- max(S00_Shear.int_single.lane$Shear)
Как только у меня есть максимальные значения для всех 11 файлов данных, тогда я нужен финальный стол
# Read theoretical values and find ratios
Beamline <- read.csv(file = "Beamline.csv", header = TRUE, sep = ",", row.names =1)
Shear <- data.frame(EXT.Single = c(S00_Max.Shear.ext_single.lane,S01_Max.Shear.ext_single.lane,
S02_Max.Shear.ext_single.lane,S03_Max.Shear.ext_single.lane,
S04_Max.Shear.ext_single.lane,S05_Max.Shear.ext_single.lane,
S06_Max.Shear.ext_single.lane,S07_Max.Shear.ext_single.lane,
S08_Max.Shear.ext_single.lane,S09_Max.Shear.ext_single.lane,
S10_Max.Shear.ext_single.lane)/Beamline[10,2], EXT.Multi =
c(S00_Max.Shear.ext_multi.lane,S01_Max.Shear.ext_multi.lane,
S02_Max.Shear.ext_multi.lane,S03_Max.Shear.ext_multi.lane,
S04_Max.Shear.ext_multi.lane,S05_Max.Shear.ext_multi.lane,
S06_Max.Shear.ext_multi.lane,S07_Max.Shear.ext_multi.lane,
S08_Max.Shear.ext_multi.lane,S09_Max.Shear.ext_multi.lane,
S10_Max.Shear.ext_multi.lane)/Beamline[10,2], INT.Single =
c(S00_Max.Shear.int_single.lane,S01_Max.Shear.int_single.lane,
S02_Max.Shear.int_single.lane,S03_Max.Shear.int_single.lane,
S04_Max.Shear.int_single.lane,S05_Max.Shear.int_single.lane,
S06_Max.Shear.int_single.lane,S07_Max.Shear.int_single.lane,
S08_Max.Shear.int_single.lane,S09_Max.Shear.int_single.lane,
S10_Max.Shear.int_single.lane)/Beamline[10,2], INT.Multi =
c(S00_Max.Shear.int_multi.lane,S01_Max.Shear.int_multi.lane,
S02_Max.Shear.int_multi.lane,S03_Max.Shear.int_multi.lane,
S04_Max.Shear.int_multi.lane,S05_Max.Shear.int_multi.lane,
S06_Max.Shear.int_multi.lane,S07_Max.Shear.int_multi.lane,
S08_Max.Shear.int_multi.lane,S09_Max.Shear.int_multi.lane,
S10_Max.Shear.int_multi.lane)/Beamline[10,2])
Прямо сейчас я просто копирую и вставляю код еще 10 раз и меняю S00 на S01, S02 ... S10. Могу ли я сделать это с одним l oop?