Создать список на основе шаблона в строковом векторе - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь создать список с информацией по местоположению.В настоящее время у меня есть символьный вектор со строками.Который имеет местоположение, информацию, информацию, информацию, местоположение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...

1 Ответ

1 голос
/ 10 июля 2019

Не пригодный формат данных, но вы здесь:

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"

Этот формат позволяет легко выполнять поднаборы и другую обработку данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...