Как вернуть вектор при соединении R с Tableau?

Я пытаюсь вернуть вектор через вычисляемое поле Tableau. Согласно ссылке ниже, Tableau может получать либо одно значение, либо вектор, используя соединения с R через вычисляемое поле.

http://community.tableau.com/docs/DOC-5313

видеть:

«... Если код R возвращает матрицу значений, Tableau не будет знать, что делать, мы должны вернуть одно значение или вектор, ...»

Это то, что у меня есть в моем вычисляемом поле, где Параметр 1 и Параметр 2 - это просто произвольные значения (только для демонстрационных целей):

SCRIPT_REAL ('testvector <- c(.arg1, .arg2); testvector',min([Parameter 1]), min([Parameter 2]))

Ожидалось, что будет возвращен единственный вектор, но я получаю следующее сообщение об ошибке:

## Error: Unexpected number of results returned by SCRIPT function.  Function expected 1 values; 2 values were returned. 

person Ryan Chase    schedule 28.07.2015    source источник


Ответы (2)


Фактически вы не возвращаете значение; просто назначаем 3 вектора в Rserve среде. После присвоения нужно вернуть testvector:

SCRIPT_REAL('column1 <- c(.arg1, .arg2); 
            column2 <- c(.arg3, .arg4); 
            testvector <- c(column1,column2);
            testvector', 
            min([Parameter 1]), min([Parameter 2]),min([Parameter 3]), min([Parameter 4]))
person Steven Beaupré    schedule 28.07.2015
comment
Я запутался. Почему было создано 3 вектора? Похоже, должен быть только один - testvector <- c(column1, column2). Кроме того, я добавил в свой скрипт одну строку testvector, но это не решило проблему. Я все еще получаю то же сообщение об ошибке. - person Ryan Chase; 28.07.2015
comment
Я думаю, вы отредактировали заголовок моего исходного сообщения - неожиданное количество результатов, возвращаемых функцией скрипта - person Ryan Chase; 28.07.2015
comment
Вам нужно явно указать, какой вектор возвращать в Tableau. Без указания ... ;testvector Rserve не знает, какой из 3 векторов (например, column1, column2 или testvector) вернуть. - person Steven Beaupré; 28.07.2015
comment
в моем первом комментарии я упомянул Кроме того, я добавил в свой сценарий однострочный тестовый вектор, но это не решило проблему. Я все еще получаю то же сообщение об ошибке. Я думаю, это как-то связано с тем взглядом, который я пытаюсь навязать. Например, этот сайт: ссылка говорит это: Результат сценария R должен быть либо скаляром, либо вектором длины, который реплицируется для всех строк, либо вектором длины, равной количеству строк в таблице результатов Tableau. - person Ryan Chase; 28.07.2015
comment
Попробуйте на листе, и на полках нет других таблеток. - person Steven Beaupré; 28.07.2015
comment
@RyanChase Попытайтесь сократить свой пример с помощью только одного аргумента. Что-то вроде 'testvector <- .arg1; testvector, MIN([Parameter 1])' - person Steven Beaupré; 28.07.2015
comment
Если я упрощу его до того, что вы предлагаете, он больше не будет вектором. Это будет одно значение. - person Ryan Chase; 28.07.2015
comment
... Тем не менее, я упростил пример. - person Ryan Chase; 28.07.2015
comment
Давайте продолжим это обсуждение в чате. - person Steven Beaupré; 28.07.2015

Если таблица, в которой вы используете это вычисляемое поле, имеет 1 строку, а значение Parameter1 равно 9, а значение Parameter2 равно 5, в опубликованном вами примере кода вы создаете вектор, который выглядит как (9,5), который имеет 2 строки.

Таким образом, таблица 1 строка, но вычисляемое поле возвращает 2 строки. Следовательно, сообщение об ошибке

«Функция ожидала 1 значение; было возвращено 2 значения».

Если вы хотите вернуть вектор, вам нужно будет передать вектор. Вы можете взглянуть на пример кластеризации k-средних на Вводное сообщение в блоге об интеграции R, в котором передаются несколько векторов, составляющих набор данных Iris, и возвращается вектор с назначениями кластера.

person Bora    schedule 13.05.2016