2016-08-31 3 views
-1

У меня есть основная проблема в R, все, с чем я работаю, мне знакомо (данные, функции), но по какой-то причине я не могу получить strsplit или функцию gsub, чтобы работать как ожидается. Я также попробовал пакет stringr. Я не собираюсь использовать код, используя этот пакет, потому что я знаю, что эта проблема проста и может быть выполнена с помощью двух функций, упомянутых выше. Лично мне хочется, чтобы страница для этого не нужна, но на данный момент мое терпение довольно тонкое.strsplit не ведет себя как ожидалось R

Я пытаюсь удалить "." и число, за которым следует '.' в ансамблевом идентификаторе гена. Просто, я знаю.

id <- "ENSG00000223972.5" 
gsub(".*", "", id) 
strsplit(id, ".") 

Символ звездочки должен был поймать что-либо после «.». и удалить его, но я не знаю точно, если это то, что он делает. strsplit должен обязательно выводить список из двух элементов, первый из которых будет перед «.». а вторая - одна цифра после. Все, что он возвращает, - это список с 17 символами «», без пробелов и по одному для каждого символа в строке. Я думаю, что это очевидная вещь, которую я пропускаю, но я не смог ее понять. Заранее спасибо.

+5

Побег это как '' в gsub или используется fixed = TRUE. Кроме того, вы должны заметить, что вы не назначили результат gsub. – Frank

ответ

2

Прочитайте файл справки для ?strsplit, вы не можете использовать "."

id <- "ENSG00000223972.5" 
gsub("[.]", "", id) 
strsplit(id, split = "[.]") 

Выход:

> gsub("[.]", "", id) 
[1] "ENSG000002239725" 
> strsplit(id, split = "[.]") 
[[1]] 
[1] "ENSG00000223972" "5" 

Справка: "\\"

unlist(strsplit("a.b.c", ".")) 
## [1] "" "" "" "" "" 
## Note that 'split' is a regexp! 
## If you really want to split on '.', use 
unlist(strsplit("a.b.c", "[.]")) 
## [1] "a" "b" "c" 
## or 
unlist(strsplit("a.b.c", ".", fixed = TRUE)) 
+0

Я не знал этого, должен был присмотреться к странице справки. благодаря – abbas786

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