3

私は csv ファイルを持っています。パッケージの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'

記号を 1 つずつ入力すると、正常に動作します。また、最後の行の最後に行くと、余白が壊れているように見えることにも気付きました。画像では、'symbols' の値を確認できます。行末は本来あるべきよりも右側に数スペース多くなっています (最初のかっこの色が原因でわかります)。

記号オブジェクト

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 に答える