не могу импортировать пакет с rPython - PullRequest
0 голосов
/ 03 мая 2018

Я установил umap-learn на mac OS и попытался использовать его в r markdown файле, используя rPython, как это объясняется здесь:

http://blog.schochastics.net/post/using-umap-in-r-with-rpython/#fn1

Но когда я запускаю следующий код:

```{r}
umap <- function(x,n_neighbors=10,min_dist=0.1,metric="euclidean"){
  x <- as.matrix(x)
  colnames(x) <- NULL
  rPython::python.exec( c( "def umap(data,n,mdist,metric):",
              "\timport umap" ,
              "\timport numpy",
              "\tembedding = umap.UMAP(n_neighbors=n,min_dist=mdist,metric=metric).fit_transform(data)",
              "\tres = embedding.tolist()",
              "\treturn res"))

  res <- rPython::python.call( "umap", x,n_neighbors,min_dist,metric)
  do.call("rbind",res)
}

data(iris)
res <- umap(iris[,1:4])
```

Я получаю ошибку:

Ошибка в python.exec (python.command): нет модуля с именем umap

Итак, очевидно, Rstudio не видит umap. Я проверил, что пакет установлен по conda list:

umap-learn                0.2.3                    py36_0    conda-forge

Как я могу это исправить?

Обновление

Версия python была неправильной, поэтому я добавил .Rprofile и указал на правильную версию, однако ошибка сохранилась.

system("python --version")
Python 3.6.5 :: Anaconda, Inc.

Обновление

Более подробная ошибка (трассировка стека):

 Error in python.exec(python.command) : No module named umap
 4.stop(ret$error.desc)
 3.python.exec(python.command)
 2.rPython::python.call("umap", x, n_neighbors, min_dist, metric)
 1.umap(iris[, 1:4])

1 Ответ

0 голосов
/ 03 мая 2018

Необходимо убедиться, что umap доступен для того же Python, который используется в R, который по умолчанию не будет вашей установкой Anaconda.

Вы можете проверить свой Python с помощью system("python --version") и, если необходимо, перейти на строку cmd и выполнить pip install umap или pip3 install umap и т. Д. (Чтобы использовать текущий доступный Python; альтернативно, вы можете switch путь Python к вашему Python Anaconda).

...