Немного странного случая: у меня есть код, который создает матрицы 2x2 и заполняет их конкретными значениями, а затем генерирует другие матрицы с длиной, равной значениям ячейки в первых матрицах. Когда я смотрю на значения в матрице, я получаю один результат - и когда я иду создавать списки, они действуют как совершенно другое число.R: Значения, зависящие от метода вызова
Например, соответствующий код, работающий на R 3.2.2
N <-100
pa <-.3
pna <- .4
pb <-.1
pnb <-.2
table.nH <- matrix(nrow=2,ncol=2)
table.nH[1,1] <- (1-pna)*(1-pnb)*N
table.nH[2,1] <- (1-pa)*(1-pnb)*N
table.nH[1,1] #This should be 48
> [1] 48
table.nH[2,1] #This should be 56
> [1] 56
pass.list <- matrix(rep(c(0,0,0,0),table.nH[1,1]),ncol=4,byrow=TRUE)
fail.list <- matrix(rep(c(0,0,0,0),table.nH[2,1]),ncol=4,byrow=TRUE)
length(pass.list[,1]) #Number of rows *should be* 48
> [1] 48
length(fail.list[,1]) #Number of rows *should be* 56
> [1] 55
Я не могу за жизнь мне понять, почему один работает, но другой нет. Он работает, если я жестко программирую 56 (т. Е. Rep (c (0,0,0,0), 56)), но не, если я ссылаюсь на 56 в матрице. В фактической таблице нет значений NA, и это не уникально (по некоторым причинам я вижу это на других версиях одной и той же проблемы). Однако это также не универсально: некоторые другие таблицы, созданные таким образом, работают точно так, как ожидалось.
Что происходит, и как я могу это исправить?
Большое спасибо; ваш ответ объяснял не только то, что было не так, но почему я его не замечал, и ответ, который вы связывали, имеет смысл (... в ретроспективе). –
Добро пожаловать. Если бы ответ помог, пожалуйста, согласитесь, принимая его. – Stibu