我想在R中读取一个.csv文件。我的文件看起来像这样-
A,B,C,D,E
1,2,3,4,5
6,7,8,9,10
.
.
.
行数。
所有都是字符串。第一行是标题。
我正在尝试使用以下方式读取文件 -
mydata=read.csv("devices.csv",sep=",",header = TRUE)
但是我的数据被分配为1个变量的X行观测值。其中X是行数。整行变成了单列。 但我想要每个标题字段都在不同的列中。我无法理解问题所在。
"
),可以使用OP帖子中的代码。str(read.csv("devices.csv",sep=",",header = TRUE))
#'data.frame': 2 obs. of 1 variable:
#$ A.B.C.D.E: Factor w/ 2 levels "1,2,3,4,5","6,7,8,9,10": 1 2
在使用readLines
读取数据后,我们可以使用gsub
删除"
,然后使用read.table
进行处理。
read.csv(text=gsub('"', '', readLines('devices.csv')), sep=",", header=TRUE)
# A B C D E
#1 1 2 3 4 5
#2 6 7 8 9 10
read.csv(pipe("awk 'gsub(/\"/,\"\",$1)' devices.csv"))
# A B C D E
#1 1 2 3 4 5
#2 6 7 8 9 10
或者
library(data.table)
fread("awk 'gsub(/\"/,\"\",$1)' devices.csv")
# A B C D E
#1: 1 2 3 4 5
#2: 6 7 8 9 10
v1 <- c("A,B,C,D,E", "1,2,3,4,5", "6,7,8,9,10")
write.table(v1, file='devices.csv', row.names=FALSE, col.names=FALSE)
测试方法: data[1]
将给出第一列的结果
或者,你也可以尝试这种方式
data = read.table(text=gsub('"', '', readLines('//fullpath to devices.csv//')), sep=",", header=TRUE)
好运!
read.table(text=gsub('"', '', readLines('devices.csv')), sep=",", header=TRUE)
- akrun