2014-08-29 4 views
0

Я хочу разбить строку и передать ее в список.Разделите строку в R и назначьте список

Для экс:

string <- "hi hello" 

После расщепления и ввод в список с именем l, то l[1] должен дать мне hi и l[2] должен дать мне hello.

Пытался найти более ранние вопросы, но не смог найти это.

+0

Это должно быть покрыто несколько раз на этом сайте: 'л <- strsplit (строка," «) [[1]]' должны это сделать. – A5C1D2H2I1M1N2O1R2T1

ответ

1

Здесь у вас есть это

> l <- strsplit(string, " ")[[1]] 
[1] "hi" "hello" 
> l[1] 
[1] "hi" 
> l[2] 
[1] "hello" 
+0

Что означает '[[1]]' последним образом? –

+0

@AvinashRaj, 'strsplit' векторизован и возвращает« list »той же длины, что и входной вектор с разделенными элементами внутри этого элемента списка. Так как это отдельный вектор, который расщепляется, чтобы сгладить его в один вектор, вы можете напрямую обращаться к нему с помощью [[1]] '. – A5C1D2H2I1M1N2O1R2T1

+0

спасибо за ваше объяснение ... –

0

Чтобы иметь разделенные строки в отдельные списки.

string <- "hi hello" 
l <- lapply(unlist(strsplit(string, split= " ")), FUN = function(x) x) 

[[1]] 
[1] "hi" 

[[2]] 
[1] "hello" 
+0

Um ... почему не просто 'as.list (unlist (strsplit (string," ")))' если это результат, который, по вашему мнению, им нужен? – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto, достаточно справедливый, немного более короткий код, но тот же результат. Разум просто пошел к 'lapply', но' as.list' более краток. – cdeterman

+0

Спасибо всем за ответы. –

0

О чем, черт возьми ....

принять совершенно иной подход, так как вы разделив на пространствах, можно также легко использовать scan:

l <- scan(what = "", text = string) 
# Read 2 items 
l[1] 
# [1] "hi" 
l[2] 
# [1] "hello" 

Обратите внимание, что если это то, что вы хотите, ваша терминология отключена. В R это vector. Если вы хотите list, оберните scan с as.list.

1

Вот еще один вариант. Вместо split ting, сравните, что хотите.

> x <- 'hi hello' 
> l <- regmatches(x, gregexpr('\\S+', x))[[1]] 
> l[1] 
## [1] "hi" 
> l[2] 
## [1] "hello" 
0

Try:

l = unlist(strsplit(string, ' ')) 

l[1] 
[1] "hi" 

l[2] 
[1] "hello" 
+1

Теперь эти ответы выходят из-под контроля ... – A5C1D2H2I1M1N2O1R2T1

+0

OP просто хочет объект l, который дает правильные значения для l [1] и l [2]. – rnso

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