Вот несколько идей
scan(text="1,2,3,", sep=",", quiet=TRUE)
#[1] 1 2 3 NA
unlist(read.csv(text="1,2,3,", header=FALSE), use.names=FALSE)
#[1] 1 2 3 NA
Эти оба возвращают целочисленные векторы. Вы можете обернуть as.character
вокруг одного из них, чтобы получить точный результат вы показываете в Вопрос:
as.character(scan(text="1,2,3,", sep=",", quiet=TRUE))
#[1] "1" "2" "3" NA
Или вы могли бы указать what="character"
в scan
или colClasses="character"
в read.csv
для слегка различной мощности
scan(text="1,2,3,", sep=",", quiet=TRUE, what="character")
#[1] "1" "2" "3" ""
unlist(read.csv(text="1,2,3,", header=FALSE, colClasses="character"), use.names=FALSE)
#[1] "1" "2" "3" ""
Вы также можете указать na.strings=""
вместе с colClasses="character"
unlist(read.csv(text="1,2,3,", header=FALSE, colClasses="character", na.strings=""),
use.names=FALSE)
#[1] "1" "2" "3" NA
'stringr' является медленным, вы должны использовать 'stringi' :) –
@silvaran, вы абсолютно правы, я только узнал о' stringi' после того, как написал это. (Как, на самом деле, оставаться на вершине самого последнего пакета в R?) – smci