2013-05-29 2 views
0

Рассмотрим следующий фрагмент кода -R: Назначение для соответствия размеров целевого массива

targetArray = array(Inf, dim=c(3,5)) 
targetArray 
    [,1] [,2] [,3] [,4] [,5] 
[1,] Inf Inf Inf Inf Inf 
[2,] Inf Inf Inf Inf Inf 
[3,] Inf Inf Inf Inf Inf 

temp = NA 
data = rnorm(n = 15, mean = 2, sd = 2) 

Теперь, если я назначу data или temp к targetArray, он будет изменять размеры targetArray. Есть ли способ убедиться, что этого не происходит?

targetArray = temp 
targetArray 
[1] NA 

targetArray = data 
targetArray 
[1] 2.4026814 2.4011577 -0.5089512 1.6223969 4.7533560 0.6619385 -0.5676509 1.3093745 1.2342189 -0.5368143 4.4641850 1.9515940 2.0025938 -1.1589229 
[15] 1.6669973 

Как я могу убедиться, что назначение соответствует размерам targetArray? то есть когда я ввожу targetArray = temp, он должен изменить все элементы targetArray на NA без изменения его размеров. Аналогично, для targetArray = data, он должен перестроить 1 x 15 мерный вектор data, чтобы он соответствовал размерам targetArray и назначал его (как для ротации, так и для столбца).

ответ

1

Я думаю, что ваши ожидания немного сбиты. В этом задании все равно, что на LHS - вы не «заполняете» данные в targetArray, а скорее (обычно копируете и) присваиваете некоторые данные имени targetArray.

Чтобы получить желаемый результат, просто отрегулируйте размеры входных данных, например.

targetArray = matrix(data, ncol = ncol(targetArray), nrow = nrow(targetArray)) 
+0

Thanks @eddi. Я знал предложение, которое вы предлагаете, просто я не могу использовать его для своего кода. – steadyfish

+0

@steadyfish - почему бы и нет? – eddi

+0

@eddy Я в основном имею многомерный «targetArray» с фиксированными размерами. Кроме того, я неоднократно выполняю это задание для разных измерений. Короткий ответ, я не могу изменить размеры, я должен будет явно проверить несоответствие в измерениях целевых и исходных переменных до того, как произойдет присвоение. – steadyfish

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