[英]Create a list based on pattern in string vector
我正在嘗試通過位置生成包含信息的列表。 目前,我有一個帶有字符串的字符向量。 其中具有位置,信息,信息,信息,位置2,信息,信息,信息結構。 我想要一個列表,其中每個元素都是location1:信息,信息信息等。
我試圖創建一個標識數據中位置的循環,但是我無法理解如何將信息和位置動態地結合在一起(位置和信息數量在變化,因此我需要動態的解決方案)。
list_of_locations = list()
locations = c("location1","location2")
original_vector = c("location1","July 123","August 345", "September 678", "location2","July 123","August 345")
for (word in original_vector){
if(word %in% locations){
list_of_locations[[word]] = word
} else {
list_of_locations[[word]] = word
}
}
我在尋找清單:
1: location1, July 123, August 345, September 678
2: location2, July 123, August 345...
這不是有用的數據格式,但是您在這里:
split(original_vector,
cumsum(
grepl("location", original_vector, fixed = TRUE) #search for the word "location"
)
)
#$`1`
#[1] "location1" "July 123" "August 345" "September 678"
#
#$`2`
#[1] "location2" "July 123" "August 345"
或者(感謝@Ronak),如果您有位置矢量:
split(original_vector, cumsum(original_vector %in% locations)
如果您的數據實際上是所描述的格式(1個位置,3個信息條目),那么我會將original_vector
向量轉換為矩陣:
original_vector = c("location1","July 123","August 345", "September 678", "location2","July 123","August 345", "September 678")
t(matrix(original_vector, 4))
# [,1] [,2] [,3] [,4]
#[1,] "location1" "July 123" "August 345" "September 678"
#[2,] "location2" "July 123" "August 345" "September 678"
這種格式可以方便地進行子集和其他數據處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.