阅读R

时间:2015-06-29 05:34:24

标签: r csv

我正在尝试读取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)

但是mydata被赋予了1个变量的X个观测值。其中X是行数。整行成为一列。 但我希望每个标题字段位于不同的列中。我无法理解这个问题。

2 个答案:

答案 0 :(得分:7)

如果有引号("),请使用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

我们可以在使用"阅读数据后删除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

如果我们使用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

或者

 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)

答案 1 :(得分:1)

除非您的csv文件已损坏,否则您编写的代码应该有效 检查给出devices.csv的绝对路径

要测试:data[1]会为您提供第1列结果

或者,您也可以这样尝试

data = read.table(text=gsub('"', '', readLines('//fullpath to devices.csv//')), sep=",", header=TRUE) 

祝你好运!