2016-06-30 2 views
0

У меня есть список R (на самом деле список списка списка), содержащий данные, которые я хочу использовать в SAGE, для запуска процедуры выпуклой оптимизации.Назначение матрицы R из списка в список мудрецов

Код идет как этот

sage_list = [None] * 2 
for k in range(2): 
    x = r('my_r_list[[1]][[1]][[k+1]]') 
    sage_list[k] = x._sage_() 

Первый в x присвоения не является последовательным. Если я выполняю несколько раз один и тот же код, я получаю разные данные. Но что еще более важно sage_list[k] назначение выдает ошибку:

NameError: name 'structure' is not defined 

делает следующее, однако работает:

sage_list = [None] * 2 
x = r('my_r_list[[1]][[1]][[1]]') 
y = r('my_r_list[[1]][[1]][[2]]') 
sage_list[0] = x._sage_() 
sage_list[1] = y._sage_() 

любую идею почему? (Конечно, на самом деле я гораздо больше, чем 2 итерации)

+1

Мне кажется, что в вашем цикле for вы используете 'k', ожидая, что он изменит аргумент' r' и, следовательно, 'x'. Однако 'k' в этом случае просто рассматривается как строка, я не думаю, что вы подставляете значение переменной цикла. Попробуйте: 'x = r (paste0 (" my_r_list [[1]] [[1]] [[", k + 1,"]] ")' – thepule

ответ

0

Это решение фактически работает

x = r('my_r_list')[[1]][[1]][[k+1]] 

r() урожайность и RElement типа объекта, над которым R индексирование работает.

Смежные вопросы