Я новичок в R и только начал его использовать. Сейчас я экспериментирую с пакетом Quantmod.
Пакет Quantmod, кажется, делает большую часть того, что я хочу сделать, однако я не хочу использовать функцию getSymbols () для извлечения данных в R. Вместо этого я хочу использовать свои собственные данные, хранящиеся в виде файлов csv на моем локальном диске. .
Я хочу иметь возможность извлекать данные из моих файлов CSV для использования с Quantmod. Я прочитал эту статью, в котором показано, как читать файлы CSV для использования с Quantmod, но мне это не нравится как минимум по двум причинам:
Он записывает новый (переформатированный) файл CSV на диск перед загрузкой в Quantmod. Я бы предпочел проделать любую необходимую работу с памятью, используя R.
В CSV-файле есть заголовки столбцов. Мои данные не имеют заголовков столбцов. Вместо этого поля находятся в заранее определенных фиксированных позициях столбцов (соответствует «стандартному» формату, принятому в таблицах данных Yahoo Finance).
Мне не удалось определить тип данных, возвращаемый функцией getSymbols (). Я ожидал, что он вернет фрейм данных, но когда я проверил его класс, он был идентифицирован как вектор символов, что меня очень удивило (и, честно говоря, не верю, так как я могу построить barChart из содержащихся данных в переменной):
yhoo <- getSymbols("YHOO",src="google")
class(yhoo)
[1] "character"
> yhoo
[1] "YHOO"
Я был бы признателен, если бы кто-нибудь мог показать, как написать небольшую функцию R (скорее всего, оболочку для read.csv), которая будет считывать данные из моего файла CSV и возвращать их как объект R (фрейм данных?) Для использования с Quantmod.
Вот какой-то псевдокод, объясняющий, что я хочу делать:
# in case I need some funcs here for creating data type returned by function
library(quantmod)
loadCSVDataFile <- function(full_pathname){
csvdata <- read.csv(full_pathname, header=FALSE,sep=",")
dates <- csvdata[,1]
op <- csvdata[,2]
hi <- csvdata[,3]
lo <- csvdata[,4]
cl <- csvdata[,5]
vol <- csvdata[,6]
oi <- csvdata[,7]
# Now combine columns into a data type that matches that returned by the
# getSymbols() ....
# return(dataset)
}
[[Обновление]]
Мне STLL не удалось заставить это работать, используя ответы, данные до сих пор ...:
> gbpusd <- as.xts(read.zoo('/path/to/gbpusd.csv', header=FALSE))
> class (gbpusd)
[1] "xts" "zoo"
> barChart(gbpusd)
Error in `[.xts`(x, xsubset) : subscript out of bounds
> gbpusd2 <- getSymbols.csv('gbpusd',,'/path/to/')
Error in missing(verbose) : 'missing' can only be used for arguments
>
> gbpusd2 <- getSymbols.csv('gbpusd',.GlobalEnv,'/path/to/')
Error in missing(verbose) : 'missing' can only be used for arguments
>
>
> gbpusd2 <- getSymbols.csv('gbpusd','.GlobalEnv','/path/to/')
Error in missing(verbose) : 'missing' can only be used for arguments
>
> gbpusd2 <- getSymbols.csv('gbpusd',env,'/path/to/')
Error in missing(verbose) : 'missing' can only be used for arguments
Что я делаю неправильно?
getSymbols
? В разделе «Значение»?getSymbols
указано, что он возвращает и как это возвращает. Большинство функций Quantmod также ожидают объект, подобный временному ряду, и data.frames не входят в эту категорию. - person Joshua Ulrich   schedule 23.01.2012