Это следующий вопрос из этого вопроса .
Здесь мне нужно извлечь число X строк ниже регулярного выражения на основе числового c вектора. Кроме того, я пытаюсь l oop выбора регулярных выражений на основе вектора, названного в данном случае range_Labels и включенного в код ниже.
Допустим, у меня есть текстовый файл с именем File следующим образом:
[1] " 2015 YOUTH RISK BEHAVIOR SURVEY RESULTS"
[2] " Puerto Rico High School Survey"
[3] " Codebook"
[4] " Data Variable Question Unweighted Weighted"
[5] "Location Name Code and Label Frequency Percentage"
[6] "17-17 Q1 How old are you?"
[7] " 1 12 years old or younger 9 0.7"
[8] " 2 13 years old 63 4.2"
[9] " 3 14 years old 242 17.0"
[10] " 4 15 years old 317 21.3"
[11] " 5 16 years old 487 27.0"
[12] " 6 17 years old 399 23.0"
[13] " 7 18 years old or older 100 6.8"
[14] " Missing 4"
[15] "18-18 Q2 What is your sex?"
[16] " 1 Female 822 51.8"
[17] " 2 Male 790 48.2"
[18] " Missing 9"
[19] "19-19 Q3 In what grade are you?"
[20] " 1 9th grade 393 28.0"
[21] " 2 10th grade 378 25.6"
[22] " 3 11th grade 544 23.2"
[23] " 4 12th grade 300 23.1"
[24] " 5 Ungraded or other grade 4 0.2"
[25] " Missing 2"
[26] "20-20 Q4 Are you Hispanic or Latino?"
[27] " 1 Yes 1,524 95.8"
[28] " 2 No 66 4.2"
[29] " Missing 31"
[30] " 1"
[31] "
А ниже код, который я использую, основан на этот код :
index_qm <- grep("\\?$", File, perl = TRUE) # qm = question mark (?)
index_qm
index_Missing <- grep("Missing", File, perl = TRUE)
index_Missing
range_Labels <- index_Missing - index_qm - 1
range_Labels
sum(range_Labels)
# Extract labels 2 ----------------------------------------------------------
Labels <- NA
Labels <-
lapply(grep("\\?", File, perl = TRUE),
FUN = function(x){
for (i in seq(range_Labels)){ # range_Lables[i] <- 7, 2, 5, 2
Labels <- File[x + 1:range_Labels]
}
print(Labels)
}
)
Конечный результат, Labels, должен быть списком, равным длине сумма (range_Labels), равная 4, и каждый элемент в Label должен быть равен каждому элементу range_Lables = 7, 2, 5, 2.
Конечный результат, который я ищу:
q1_label <- c
"13 years old", "14 years old",
"15 years old", "16 years old",
"17 years old", "18 years old or older")
#
q2_label <- c("Female", "Male")
#
q3_label <- c("9th grade", "10th grade",
"11th grade", "12th grade",
"Ungraded")
#
q4_label <- c("Yes", "No")
Я знаю, что мне здесь не хватает концепции базовых c l oop, но я не смог понять это.
Большое спасибо.