R проблема strsplit (легко исправить?) - PullRequest
6 голосов
/ 17 декабря 2010

Это должно быть легко. Подобные примеры, которые я читал здесь, были немного более сложными, и методы на самом деле не работают для меня.

У меня есть переменная с именем id_string

> typeof(id_string)
[1] "character"

и

> id_string
[1] "1,2,5,6,10"

Я хочу разделить эти значения и сохранить их в новой переменной. Такие, что, например:

x[1] = 1
x[4] = 6
x[5] = 10

Я пытался сделать

x <- strsplit(id_string,",") 

разделить его запятыми, но я просто получаю x = "1 2 5 6 10"

Я прочитал этот пост здесь, который похож и думал, что что-то вроде

x <- read.csv(textConnection(id_string))

будет работать, но безрезультатно.

Возможно, я слишком обдумал это. Пожалуйста, дайте мне знать, если у вас есть идеи. Спасибо.

Ответы [ 2 ]

7 голосов
/ 17 декабря 2010

Не уверен, что вы делаете неправильно, потому что он работает так, как рекламируется.

> x <- unlist(strsplit("1,2,5,6,10", ","))
> x
[1] "1"  "2"  "5"  "6"  "10"
> x[1]
[1] "1"

Имейте в виду, что strsplit возвращает list.

0 голосов
/ 20 декабря 2010

Лучше придерживаться strsplit, как описано выше.

Я думаю, что read.csv не делал то, что вы ожидали, потому что искал заголовок.Вы можете попробовать:

s <- "1,2,5,6,10"
read.csv(textConnection(s), header=FALSE)

, явно указав ему не искать заголовок.Вам все равно придется вытащить свои цифры из результирующего data.frame.Возможно, вам лучше воспользоваться функцией сканирования нижнего уровня, которая даст вам вектор чисел напрямую:

scan(textConnection(s), sep=",", quiet=TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...