R: как отобразить первые n символов из строки слов

У меня есть следующая строка:

 Getty <- "Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty, and dedicated to the proposition that all  men are created equal."

Я хочу отобразить первые 10 символов. Итак, я начал с разделения строки на отдельные символы:

 split <- strsplit(Getty, split="")
 split 

Я получаю все отдельные персонажи, как этот пункт. Затем я делаю подстроку из первых 10 символов.

 first.10 <- substr(split, start=1, stop=10)
 first.10

И вот вывод:

 "c(\"F\", \"o\""

Я не понимаю, почему это печатает? Я думал, что это будет просто распечатать что-то вроде:

 "F" "o" "u" "r" "s" 

Есть ли способ, которым я могу изменить свой код, чтобы напечатать то, что у меня есть выше?

Всем спасибо!

3 ответа

Решение

Другие ответы не устранили пробелы, как вы сделали в своем примере, поэтому я добавлю это:

strsplit(substr(gsub("\\s+", "", Getty), 1, 10), '')[[1]]
#[1] "F" "o" "u" "r" "s" "c" "o" "r" "e" "a"

Переверните код, и вы получите то, что хотите.

Getty <- "Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty, and dedicated to the proposition that all  men are created equal."


first.10 <- substr(Getty, start=1, stop=10)
first.10
"Four score"
split <- strsplit(first.10, split="")
split 
"F" "o" "u" "r" " " "s" "c" "o" "r" "e"

Причина, почему вы получили "c(\"F\", \"o\"" потому что strsplit выход является list, Мы можем преобразовать list в vector извлекая первый list элемент т.е. [[1]], Использовать head чтобы получить первые 10 символов.

head(strsplit(Getty, '')[[1]], 10)

Обновить

Если вы просто хотите извлечь символы без пробелов,

library(stringr)
head(str_extract_all(Getty, '[^ ]')[[1]],10)
#[1] "F" "o" "u" "r" "s" "c" "o" "r" "e" "a"
Другие вопросы по тегам