Добавление точки между символами в столбце в R - PullRequest
0 голосов
/ 08 ноября 2018
species <- c("Dacut","Hhyde","Faffi","Dmelan","Jrobusta")
leg <- c(1,2,3,4,5)
df <- data.frame(species, leg)

Я пытаюсь добавить точку (".") Между первой и второй буквой каждого символа в первом столбце фрейма данных.

#End Goal:
#D.acut
#H.hyde
#F.affi
#D.melan
#J.robusta

Кто-нибудь знает о каких-либокод, который я могу использовать для этой проблемы?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Использование substr() для разделения строки на позиции:

species <- c("Dacut","Hhyde","Faffi","Dmelan","Jrobusta")
leg <- c(1,2,3,4,5)
df <- data.frame(species, leg, stringsAsFactors = FALSE)


df$species <- paste0(
  substr(df$species, 1, 1),
  ".",
  substr(df$species, 2, nchar(df$species))
)
df$species

первый substr() извлекает символ от 1 до 1, второй извлекает символ от 2 до последнего символа в строке. С paste() мы можем поместить . между ними.

или sub() с обратной ссылкой:

df$species <- sub("(^.)", "\\1.", df$species)

(^.) - первый символ в строке, сгруппированный с (). sub() заменяет первый экземпляр обратным обращением к группе (\\1) плюс ..

0 голосов
/ 08 ноября 2018

Используя sub, мы можем найти на заднем плане нулевой ширины (?<=^.), а затем заменить его точкой. Это дает эффект вставки точки во вторую позицию.

df$species <- sub("(?<=^.)", "\\.", df$species, perl=TRUE)
df$species

[1] "D.acut"    "H.hyde"    "F.affi"    "D.melan"   "J.robusta"

Примечание. Если по какой-либо причине вы хотите выполнить эту замену только в том случае, если первый символ в названии вида является реальной заглавной буквой, найдите вместо этого следующий шаблон:

(?<=^[A-Z])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...