簡體   English   中英

根據字符串向量中的模式創建列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM