我有一个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
替换这些字符,或者使用替代函数?
答案 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))