Обрезать текст после символа для каждого элемента в списке - R - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь удалить текст до и включая символ ("-") для каждого элемента в списке.

Ex-

x = list(c("a-b","b-c","c-d"),c("a-b","e-f"))

желаемый вывод:

"b" "c" "d"     
"b" "f"

Я пробовал использовать различные комбинации lapply и gsub, например

lapply(x,gsub,'.*-','',x)

но это просто возвращает нулевой список -

[[1]]
[1] ""

[[2]]
[1] ""

И только при использовании

gsub(".*-","",x)

возвращает

"d\")" "f\")"

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вы близки, но, используя lapply с gsub, R не знает, какие аргументы какие.Вам просто нужно явно обозначить аргументы.

x <- list(c("a-b","b-c","c-d"),c("a-b","e-f"))
lapply(x, gsub, pattern = "^.*-", replacement = "")
[[1]]
[1] "b" "c" "d"

[[2]]
[1] "b" "f"
0 голосов
/ 15 февраля 2019

Это можно сделать с помощью цикла for.

val<-list()
for(i in 1:length(x)){
  val[[i]]<-gsub('.*-',"",x[[i]])}
val
[[1]]
[1] "b" "c" "d"

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