我正在尝试读取R.中的.csv文件.我的文件看起来像这样 -
A,B,C,D,E
1,2,3,4,5
6,7,8,9,10
.
.
.
Run Code Online (Sandbox Code Playgroud)
行数.
一切都是字符串.第一行是标题.
我试图阅读文件使用 -
mydata=read.csv("devices.csv",sep=",",header = TRUE)
Run Code Online (Sandbox Code Playgroud)
但mydata被赋予了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
Run Code Online (Sandbox Code Playgroud)
我们可以删除"与gsub与读取数据后readLines,然后用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
Run Code Online (Sandbox Code Playgroud)
如果我们使用的另一个选择linux是删除带awk和管道的引号read.csv
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
Run Code Online (Sandbox Code Playgroud)
要么
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
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)