3

我有一个 csv 文件,我想将每一列 a 提取为字符串,以便我可以将它与包中的getSymbols函数一起使用quantmod

csv 文件如下所示:

AEGR,Aegerion Pharmaceuticals Inc
AKS,AK Steel Holding Corp
ALXA‎,Alexza Pharmaceuticals Inc
CCL‎,Carnival Corporation
CECO‎,Career Education Corp
CDXS‎,Codexis Inc

我使用这段代码来读取文件:

data<-read.csv(file='CAPM/allquotes.csv',header=F)
symbols=gettext(data[,1])
symbol.names=gettext(data[,2])
getSymbols(symbols)

我收到此错误:

Error in download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m,  : cannot open URL 'http://chart.yahoo.com/table.csv?s=ALXA‎&amp;a=0&b=01&c=2007&d=5&e=16&f=2012&g=d&q=q&y=0&z=ALXA‎&amp;x=.csv'
In addition: Warning message:
In download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m,  : cannot open: HTTP status was '404 Not Found'

当我一一输入符号时,它工作正常。我还注意到,当我走到最后一行的末尾时,边距似乎已损坏。在图像中,您可以看到“符号”的值,行尾的右侧比应有的多几个空格(由于初始括号的颜色,您可以看到这一点)。

符号对象

4

2 回答 2

4

您的 csv 中有隐藏的字符 - 即从左到右的标记。由于您使用的是 RStudio,因此您可以gsub使用“\016”作为pattern参数的值来删除它。或者,您可以只保留您知道自己想要的字符,而不是删除您不想要的隐藏字符。例如,如果您的符号只有字母和/或数字,您可以使用类似gsub("[^A-Za-z0-9]", "", data[, 1])

data <- read.csv(text="AEGR,Aegerion Pharmaceuticals Inc
AKS,AK Steel Holding Corp
ALXA‎,Alexza Pharmaceuticals Inc
CCL‎,Carnival Corporation
CECO‎,Career Education Corp
CDXS‎,Codexis Inc", header=FALSE)
#data[, 1] <- gsub("\016", "", data[, 1]) #this should work in RStudio
data[, 1] <- gsub("[^A-Za-z0-9]", "", data[, 1]) #but this should work anywhere
symbols=gettext(data[,1])
getSymbols(symbols, src='yahoo')

在您之后read.csv,您可以检查data对象以查看是否有问题。

s <- as.character(data[, 1])
str(s)
#chr [1:6] "AEGR" "AKS" "ALXA""| __truncated__ "CCL""| __truncated__ "CECO""| __truncated__ "CDXS""| __truncated__
str(s[3])
#chr "ALXA""| __truncated__

charToRaw(s[3])
#[1] 41 4c 58 41 e2 80 8e
# Compare what we have to what we think we have
charToRaw("ALXA")
#[1] 41 4c 58 41
于 2012-06-16T23:33:12.567 回答
0

我正在使用使用 quantmod 的 Systematic Investor Toolbox。感谢 GSee,解决方案是这样的:

source('SystematicInvestorToolbox.r')
load.packages('quantmod')
dates='2012::2012'
data<-read.csv(file='CAPM/allquotes.csv',header=F,stringsAsFactors=F)
data[, 1] <- gsub("[^A-Za-z0-9]", "", data[, 1])
symbols=gettext(data[,1])
symbol.names=gettext(data[,2])
ia=aa.test.create.ia.custom(symbols,symbol.names,dates)
plot.ia(ia,(1:1))

值得注意的是,当我提取“symbol.names”中引号名称的字符时,从左到右的标记仅与“symbols”一起出现。

谢谢您的帮助。

于 2012-06-17T00:21:33.450 回答