2015-01-09 5 views
0

Как я могу извлечь символы до # в R? Моя строка yet#rt, и я просто хочу извлечь yet. substring хорошо, но материал до # отличается от длины, поэтому я не могу использовать его здесь.Строки символов в R

ответ

0

Вы можете использовать strsplit. Как насчет этого??

strsplit("Good#Bad","#")[[1]][1] 
[1] "Good" 
+0

Почему это не работает, если я беру что-то вроде yet.txt и пытаюсь разделить его на еще и текст, а затем получить только еще? – Hein

+0

Второй аргумент функции - указать, какой символ использовать для разделения. Для точки вам нужно добавить escape-символы. Если вы пишете 'strsplit (« yet.txt »,« \\. ») [[1]] [1]' он будет работать – Koundy

4

Вы можете использовать gsub() сдирать символ # и все после него

x <- c("apple#pie", "banana#split") 
gsub("#.*$","", x) 
# [1] "apple" "banana" 
+0

привет .. как бы это было, если я хочу расколоться на точку? – Hein

+0

Шаблон gsub принимает регулярное выражение, а точки - это специальные символы в регулярных выражениях, поэтому вам нужно избегать его. Вы можете сделать это с помощью: 'x <- c (" apple.pie "," banana.split "); gsub ("\\ .. * $", "", x) ' – MrFlick

0
^[^#]*(?=#) 

Вы можете попробовать это простое регулярное выражение для достижения этой цели.

0

Еще одна возможность

library(stringr) 
my.string <- "yet#rt" 
str_sub(string = my.string, end = str_locate(my.string,"#")[1]-1) 
3

В R, то "#", как правило, считается комментарий характер, поэтому некоторые функции, чтобы получить данные в R, как scan и read.table, имеют comment.char аргумент, который говорит R к игнорировать все после того, как этот персонаж встречается.

Вот подход с scan:

my.strings <- c("yet#rt", "blah#rt", "meh#rt") 
scan(what = "character", text = my.strings, comment.char = "#") 
# Read 3 items 
# [1] "yet" "blah" "meh" 
0

beg2char (начиная с символа) функции в qdap пакет, который я поддерживаю сделано для такого рода вещи:

library(qdap) 

x <- c("apple#pie", "banana#split") 
beg2char(x, "#") 
## [1] "apple" "banana" 

Для другие символы (вы спрашивали о периоде):

x <- c("apple.pie", "banana.split.") 
beg2char(x, ".") 
## [1] "apple" "banana 
Смежные вопросы