R strsplit сохранить последний пустой элемент как пустую строку - PullRequest
2 голосов
/ 01 октября 2019

R's strsplit удаляет последний элемент, если он «пустой» (пример 2), но не при появлении первого (пример 3) или в середине вектора для разделения (пример 4).

> unlist(strsplit(x = "1,4", split = ",")) #Example 1
[1] "1" "4"
> unlist(strsplit(x = ",4", split = ",")) #Example 2
[1] ""  "4"
> unlist(strsplit(x = "1,", split = ",")) #Example 3
[1] "1"
> unlist(strsplit(x = "1,,,4", split = ",")) #Example 4
[1] "1" ""  ""  "4"

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

> strmagic(x = "1,", split = ",") #strmagic being the wanted function
[1] "1" ""

Решение с другими пакетами: здесь (кажется). Можно ли это сделать в базе R?

ОБНОВЛЕНИЕ

Будет ли необходимо добавить элемент-заполнитель, например, в виде:

strmagic <- function(v, sep)lapply(v, function(x)head(unlist(strsplit(paste(x, "-", sep = sep), split = sep)), -1))

1 Ответ

1 голос
/ 01 октября 2019

Weird. Это работает, но не самый эффективный. ZAQ - это просто набор случайных символов

sp <- function( X ){
    X <- paste0( X, "ZAQ" )
    X <- unlist(strsplit(x = X, split = ","))
    X <- gsub( "ZAQ" ,"" ,X) 
    X
}
sp("1,4")
sp(",4")
sp("1,")
sp("1,,,4")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...