1

我不知道为什么标题名称会得到“X”。使用quote=""导入时的前缀。这是代码:

xhead = read.csv("~/Desktop/dbdump/users.txt", na.strings = "\\N", quote="", nrows = 1000)

这给了我:

names(xhead)
 [1] "X.userId."             "X.fullName."           "X.email."              "X.password."          
 [5] "X.activated."          "X.registrationDate."   "X.locale."             ...

然而:

yhead = read.csv("~/Desktop/dbdump/users.txt", na.strings = "\\N", nrows = 1000)
names(yhead)
 [1] "userId"             "fullName"           "email"              "password"          
 [5] "activated"          "registrationDate"   "locale"            ...

我有 quote="" 的原因是我被截断了记录,大概是因为埋在我的 15000 条记录中,有一个杂散的引号。

这是我的数据文件的样子:

"userId", "fullName","email","password","activated","registrationDate","locale","notifyOnUpdates","lastSyncTime","plan_id","plan_period_months","plan_price","plan_exp_date","plan_is_trial","plan_is_trial_used","q_hear","q_occupation","pp_subid","pp_payments","pp_since","pp_cancelled","apikey"
"2","Adam Smith","a@mail.com","*****","1","2004-07-23 14:19:32","en_US","1","2011-04-07 07:29:17","3",\N,\N,\N,"0","1",\N,\N,\N,\N,\N,\N,"d7734dce-4ae2-102a-8951-0040ca38ff83"
4

1 回答 1

7

列名make.names在返回之前运行。引号不是列名的有效字符。您可以通过运行来查看差异:

make.names(c('"userId"', "fullName"))
[1] "X.userId." "fullName"

make.names帮助:

语法上有效的名称由字母、数字和点或下划线字符组成,并以字母或点开头,后跟数字。... 如有必要,可在前面加上字符“X”。所有无效字符都被翻译为“.”。

一个建议是调用read.csv跳过第一行,并且不包括标题来获取大量数据。

dd <- read.csv("~/Desktop/dbdump/users.txt", na.strings = "\\N", 
         quote="", nrows = 1000, header = FALSE, skip = 1)

scan然后,您可以使用(这是read.csv在后台调用的内容)读取列名

names(dd) <- scan("~/Desktop/dbdump/users.txt", what = character(), nlines=1,sep =',')
于 2013-04-02T01:55:42.220 回答