2015-10-29 7 views
8

Я пытаюсь прочитать файл CSV, используя read_csv() из R.Не удалось найти функцию «OlsonNames» при использовании read_csv с readr пакета

library(readr) 
data <- read_csv("data/tmp.csv") 

tmp.csv приводится ниже.

"A", "B", "C", "D", "E", "F", "G", "H", "I" 
1,5,2015-07-31,5263,555,1,1,"0","1" 
2,5,2015-07-31,6064,625,1,1,"0","1" 
3,5,2015-07-31,8314,821,1,1,"0","1" 
4,5,2015-07-31,13995,1498,1,1,"0","1" 
5,5,2015-07-31,4822,559,1,1,"0","1" 
6,5,2015-07-31,5651,589,1,1,"0","1" 
7,5,2015-07-31,15344,1414,1,1,"0","1" 
8,5,2015-07-31,8492,833,1,1,"0","1" 
9,5,2015-07-31,8565,687,1,1,"0","1" 

Но оно вызывает следующую ошибку.

Error in match(x, table, nomatch = 0L) : 
    could not find function "OlsonNames" 

Как я могу решить эту ошибку? Я ошибся с ошибкой, но не нашел подходящего решения.


После некоторого копания, то же самое происходит ошибка с:

> locale() 
Error in match(x, table, nomatch = 0L) : 
    could not find function "OlsonNames" 

Похоже, ошибки, связанной с https://stat.ethz.ch/R-manual/R-devel/library/base/html/timezones.html

Перезапуск R сессии не работает.

Как устранить эту ошибку? Нужно ли устанавливать некоторые пакеты? Если да, то какой?

+2

Вы пробовали его с помощью 'read.csv'. Я попытался с 'read_csv' и не смог получить никаких ошибок. Я использовал readr_0.2.2 – akrun

+0

Я предполагаю, что вы имеете в виду 'readr :: read_csv'? **Сказать так**. –

+2

Я думаю, что ваша сессия испорчена. 'OlsonNames' не кажется связанным, и даже если это так, вы должны иметь эту функцию. Попробуйте перезапустить сеанс R. –

ответ

3

Обновление R, похоже, разрешает проблему.

Для обновления R 3.2.2 для Ubuntu 14.04 (работает только для Ubuntu 14.04 Trusty, обновлять пакеты DEB должным образом, если вы не используете 14.04):

sudo echo 'deb http://cran.es.r-project.org/bin/linux/ubuntu trusty/' >> /etc/apt/sources.list 
gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9 
gpg -a --export E084DAB9 | sudo apt-key add - 
sudo apt-get update 
sudo apt-get upgrade 

(инструкции Update от: http://ubuntuforums.org/showthread.php?t=2264580) Тогда в последней версии R:

> install.packages('readr') 
> library(readr) 
> locale() 
<locale> 
Numbers: 123,456.78 
Formats: %Y%.%m%.%d/%H:%M 
Timezone: UTC 
Encoding: UTF-8 
<date_names> 
Days: Sunday (Sun), Monday (Mon), Tuesday (Tue), Wednesday (Wed), Thursday 
     (Thu), Friday (Fri), Saturday (Sat) 
Months: January (Jan), February (Feb), March (Mar), April (Apr), May (May), 
     June (Jun), July (Jul), August (Aug), September (Sep), October 
     (Oct), November (Nov), December (Dec) 
AM/PM: AM/PM 

Теперь загрузка read_csv работы без OlsonNames ошибка.


Перед обновлением моего R, это моя версия R:

> version 
       _       
platform  x86_64-pc-linux-gnu   
arch   x86_64      
os    linux-gnu     
system   x86_64, linux-gnu   
status          
major   3       
minor   0.2       
year   2013       
month   09       
day   25       
svn rev  63987      
language  R       
version.string R version 3.0.2 (2013-09-25) 
nickname  Frisbee Sailing 
+0

Хотя этот ответ работает, было бы неплохо, если бы кто-то дал авторитетный ответ о том, почему возникает ошибка и почему происходит обновление R. – alvas

+0

Использование read.csv() решило проблему. Поскольку я начинаю, я не знаю точной причины. – qmaruf

+0

Я тоже не уверен, я думаю, что это старая версия 'readr.read.csv()' vs более новая версия 'readr.read_csv()'. Я не очень уверен, как работает пакет 'readr' R. Кто-то более опытный должен ответить на это = ( – alvas

3

Скажем пакет Pkg имеет функцию Foo.

Когда вы видите сообщение типа:

Could not find function Foo

это означает, что Pkg не была успешно загружена (т.е. library/require команды) .Ило, если Pkg требуется indrectly вашего пакета (т.е. readr в этом случае) может быть, что Pkg не установлен, или ваша установка R каким-то образом сломана. Вот почему может помочь обновление, обновление или даже перезагрузка компьютера.

В этом случае функция OlsonNames (попробуйте ввести ее в консоли R: ??OlsonNames) является псевдонимом функции base::Sys.timezone.Поскольку он относится к базовому пакету, который, конечно же, был установлен, вполне вероятно, что с вашей установкой R произошло что-то странное. Опять же, новый сеанс R, перезапуская или обновляя/обновляя R, может помочь.

Бонус: Это часто упускается из вида многих, простой способ задается сама R разработчиков получить последнюю версию R на Linux:

Выберите зеркало рядом с вами здесь: https://cran.r-project.org/mirrors.html Например, я выбираю зеркало в Дании, затем читаю README. http://mirrors.dotsrc.org/cran/bin/linux/ubuntu/README.html

У меня также был отличный комфорт для поддержки установки R на Windows с пакетом installr. Github: https://github.com/talgalili/installr/

+0

Я согласен с тем, что обновление R часто решает проблему в Linux, но нет ничего плохого в моем сеансе, когда возникает ошибка «OlsonNames», потому что это первый сеанс R, созданный с тех пор, как я сделал sudo apt-get install r-base r-base-dev', а затем в R 'install.package ('readr')' на этой конкретной машине. Таким образом, это не могло быть ошибкой сеанса. – alvas