R read.csv导入列名不正确

时间:2017-10-18 16:21:39

标签: r dataframe read.csv

我有一个csv,我想将其导入R作为data.frame。此csv包含USD.ZeroCouponBondPrice(1m)USD-EQ-SP500等标题,我无法更改。但是,当我尝试将其导入R时,R&#39} read.csv函数会将字符()-覆盖为.尽管我无法找到修复方法在函数documentation中,这行代码工作正常:

colnames(df)<-c('USD.ZeroCouponBondPrice(1m)', 'USD-EQ-SP500')

因此这些字符在data.frame列名称中是合法的。覆盖所有列名称是令人烦恼和脆弱的,因为它们有20多个,并且它们不可能改变。有没有办法阻止read.csv替换这些字符,或者使用替代函数?

2 个答案:

答案 0 :(得分:6)

如果设置参数

check.names = FALSE
在read.csv中

,然后R不会覆盖名称。但是这些名称在R中无效,并且它们的处理方式必须与有效名称不同。

答案 1 :(得分:-2)

使用Kelli-Jean's answer说明如何使用Tibbles

的可能check.names = FALSE解决方案
# install.packages(c("tidyverse"), dependencies = TRUE)
library(tibble)
dta <- url("http://s3.amazonaws.com/csvpastebin/uploads/a4c665743904ea8f18dd1f31edcbae04/crazy_names.csv")
TBdta <- as_tibble(read.csv(dta, check.names = FALSE)) 
TBdta
#> # A tibble: 6 x 3
#>   USD.ZeroCouponBondPrice(1m) USD-EQ-SP500 crazy name
#>                        <fctr>        <dbl>      <int>
#> 1                           A         10.0         12
#> 2                           A         11.0         14
#> 3                           B          5.0          8
#> 4                           B          6.0         10
#> 5                           A         10.5         13
#> 6                           B          7.0         11

请务必阅读this introduction to Tibbles,因为它们的行为与常规数据框略有不同。

如果有人需要使用https

temporaryFile <- tempfile()
download.file("https://s3.amazonaws.com/csvpastebin/uploads/a4c665743904ea8f18dd1f31edcbae04/crazy_names.csv", destfile = temporaryFile, method="curl")
TBdta2 <- as_tibble(read.csv(temporaryFile, check.names = F))