rpy2 не переводит "_" в "." - PullRequest
       6

rpy2 не переводит "_" в "."

2 голосов
/ 05 февраля 2020

Я пытаюсь прочитать CSV-файл в Python, используя функцию "read.csv", импортированную из R с использованием rpy2.

r_read_csv = robjects.r['read.csv']
r_read_csv("initVar.csv", header = True, row_names = 1)

Однако приведенный выше код возвращает ошибку с сообщением:

rpy2.rinterface_lib.embedded.RRuntimeError: Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
    unused argument (row_names = 1)

В R имя параметра равно row.names. Однако я не могу использовать точку, потому что ее значение отличается от Python.

. Я подумал, что rpy2 переводит «_» в «.». По крайней мере, это то, что я понял из их документации . Видимо, я не прав.

Вопрос : Как мне указать row.names = 1 в этом случае?

1 Ответ

3 голосов
/ 06 февраля 2020

Интересная ошибка, которую я воспроизвожу! Похоже, read.csv в rpy2 не наследует родительскую функцию, read.table и, следовательно, не распознает аргумент row_names . Однако вы можете использовать read.table, указав значения по умолчанию read.csv:

read_tbl = robjects.r['read.table']

rdf = read_tbl("/path/to/data.csv", header = True, row_names = 1, sep = ",")

Аналогично, если вы используете подход importr для пакета утилит:

from rpy2.robjects.packages import importr
...
utils = importr("utils")

rdf = utils.read_table("/path/to/data.csv", header = True, row_names = 1, sep = ",")

Однако ни один из приведенных ниже вариантов не работает в Python, но работает в R:

Python

read_csv = robjects.r['read.csv']
rdf = read_csv("/path/to/data.csv", row_names = 1)

utils = importr("utils")
rdf = utils.read_csv("/path/to/data.csv", row_names = 1)

R

df <- read.csv("/path/to/data.csv", row.names = 1)
...