2016-06-10 3 views
0

Я манипулирую таблицу регрессии, созданную пакетом stargazer, которая создает таблицу и сохраняет ее как объект символа длиной более 1 (естественно).Вставить подстроку в объект символа в R

Я хотел бы манипулировать этим символьным объектом, вставив некоторую информацию о модели (например, группируя некоторые переменные для получения дополнительной информации для читателя). В конечном счете, это процесс вставки нескольких «строк» ​​символов/строк в существующий объект символа.

Вот минимальный рабочий пример.

thislittle <- c("this", "little", "to", "the", "market") 
piggywent <- c("piggy", "went") 

Я хотел бы вставить piggywent в thislittle, чтобы получить этот complete объект.

> complete 
[1] "this" "little" "piggy" "went" "to"  "the" "market" 

Для моих конкретных целей (за пределами этого минимального рабочего примера), я должен указать точный элемент (здесь: второй), после чего вставить этот другой символьный объект.

Вот где я признаюсь, что это, вероятно, простая задача, но я совершенно не привык к манипулированию строками и символьными объектами в R. Я также не знаком с терминологией, которая делала поиск бесплодным. Я понял, как перезаписать некоторые строки, но это все.

Любые советы были бы весьма полезными.

+0

'C (thislittle [1: 2], piggywent, thislittle [3: 5]) [1] "этот" "мало" "поросенок" "пошел" "до" "The" "рынок" '? – Psidom

+0

'c (thislittle [a <- 1: 2], piggywent, thislittle [-a])' немного короче и позволяет не знать полную длину :) – Therkel

+0

Оба работают, но подход Therkel прекрасно обобщается. Это хорошо для работы, которую я хочу сделать. – steve

ответ

1

Определяя свой индекс первого бита thislittle, вы можете удалить эти индексы, когда вы добавите остальную часть вектора с оператором минус. Естественно, это может быть сделано в отдельной строке раньше, если это более сложно.

c(thislittle[a <- 1:2], piggywent, thislittle[-a]) 
# [1] "this" "little" "piggy" "went" "to"  "the" "market" 
0
mySplit=which(thislittle=="little") 
myl=length(thislittle) 

littleHead= thislittle[1:mySplit] 
littleTail= thislittle[(mySplit+1):myl] 
complete=append(littleHead, append(piggywent, littleTail)) 

Hope it helps 
+0

'littleTail' можно упростить до' littleTail = thislittle [- (1: mySplit)] '. Тогда вам не нужно 'myl'. – Therkel

+0

Хороший вопрос! Спасибо за этот намек. –

Смежные вопросы