2016-03-16 2 views
-2

Я очень смущен ... и думает ли эта ошибка реальна? Как это может быть? Я просто хочу сделать вектор 0 и 1.Действительно ли это ошибка R?

Вот источник и результат

n.subj=1000 
prop.aber = 0.9 
n.measure = 3 
n.subj.norm = n.subj*(1-prop.aber) 
n.subj.aber = n.subj*prop.aber 
labE <- rnorm(n.subj*n.measure, 0, 1) 
labT_ <- c(rep(0, n.subj.norm), rep(1, n.subj.aber)); length(labT_) 
sum(labT_ == 0); sum(labT_ == 1) 


[1] 99 
[1] 900 

Мой здравый смысл подсказывает мне, что это должно быть 100 и 900 !!!!!!?!?! ?????

+1

См 'помощь (" образец ")' за то, что вы действительно можете достичь. Здесь нет ошибки. – Roland

ответ

1

Из-за проблемы с плавающей точкой, n.subj.norm не совсем 100. См this сообщений для получения дополнительной информации

Смотрите пример ниже:

n.subj.norm == 100 
# FALSE 
length(rep(0, 100)) 
# 100 
length(rep(0, n.subj.norm)) 
# 99 
length(rep(0, round(n.subj.norm, 0))) 
# 100 
+1

Также: 'class (n.subj.norm); as.integer (n.subj.norm) ' – Roland

+0

Довольно шокирует. Я никогда не думал, что это вызовет любую проблему в таких функциях, как rep, помимо сравнения ... –

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