将逗号分隔的长行读取到 R 中的列
Reading a long comma separated line to a column in R
我有一个很长的逗号分隔字符串,我想在 R 中将其读取为列向量。
我试图将其读作 table,想知道我是否可以将其转置,但读入 table 需要很长时间。
col = read.table("filename.csv", sep = ",", header=FALSE)
colT = t(col)
字符串很大,有 270 万个条目,用逗号分隔。因此它不能在文本编辑器中处理,并且试图用 '\n' 替换 ',' 是徒劳的。我可以在 R 中做到这一点吗?
?scan
这种事情会很快。
tmp <- paste(paste0(letters,1:2.7e6),collapse=",")
system.time(scan(text=tmp, what=character(1), sep=","))
#Read 2700000 items
# user system elapsed
# 1.15 0.00 1.16
我们可以使用fread
library(data.table)
fread("filename.csv", header=FALSE)
tmp <- paste(paste0(letters,1:2.7e6),collapse="\n")
system.time(fread(tmp, header=FALSE))
# user system elapsed
# 0.87 0.00 0.88
如果 OP 的数据有 ,
而不是 \n
,我们可以使用 gsub
作为@thelatemail 提到的
fread(gsub(",","\n",tmp),header=FALSE)
我有一个很长的逗号分隔字符串,我想在 R 中将其读取为列向量。 我试图将其读作 table,想知道我是否可以将其转置,但读入 table 需要很长时间。
col = read.table("filename.csv", sep = ",", header=FALSE)
colT = t(col)
字符串很大,有 270 万个条目,用逗号分隔。因此它不能在文本编辑器中处理,并且试图用 '\n' 替换 ',' 是徒劳的。我可以在 R 中做到这一点吗?
?scan
这种事情会很快。
tmp <- paste(paste0(letters,1:2.7e6),collapse=",")
system.time(scan(text=tmp, what=character(1), sep=","))
#Read 2700000 items
# user system elapsed
# 1.15 0.00 1.16
我们可以使用fread
library(data.table)
fread("filename.csv", header=FALSE)
tmp <- paste(paste0(letters,1:2.7e6),collapse="\n")
system.time(fread(tmp, header=FALSE))
# user system elapsed
# 0.87 0.00 0.88
如果 OP 的数据有 ,
而不是 \n
,我们可以使用 gsub
作为@thelatemail 提到的
fread(gsub(",","\n",tmp),header=FALSE)