Как работает потолок?

Я новичок в R.

На данный момент я изучаю потолочные коды следующим образом:df4 <- data.frame(Y=rnorm(5),Z=ceiling(rnorm(5)))

Мой вопрос: что делает потолок в этом случае?

Результат для кода выше, как показано ниже:

       Y      Z
1 -0.5237500  0
2 -1.2548762 -1
3  0.9723432  0
4  0.1974542  1
5  1.3507062  1

(Это беспокоит меня, так как это не похоже на обычную функцию потолка для меня.)

Любая помощь и / или объяснение будет оценено.

4 ответа

Без использования какого-либо пакета, сначала создайте dataframe случайного числа и вызвать ceiling:

df4 <- data.frame(Y=rnorm(5))
df4$Z <-ceiling(df4$Y)
df4
          Y   Z
1  0.3466323  1
2 -0.3913280  0
3 -1.8246212 -1
4 -0.1052592  0
5 -1.4643682 -1

Потолок не дает ожидаемых результатов здесь, потому что вектор, произведенный в Y отличается от того, который производится в Z - в каждом из них вы выбираете новый набор чисел.

Что вы должны сделать, это:

library(dplyr)
df4 <- data.frame(Y=rnorm(5))
df4 <- df4 %>% mutate(Z = ceiling(Y))

По-видимому, Z=ceiling(rnorm(5)) здесь ссылаются на верхний предел значения Z / Z, который генерируется случайным образом. Он полностью независим от переменной Y. Спасибо, в любом случае.

Функция потолка всегда округляется до большего числа, что означает, что негативы округляются в направлении нуля.

В вашем коде вы генерируете два разных набора чисел, потому что генератор псевдослучайных чисел не перерабатывает старые значения для rnorm() функция:

testcode:

set.seed(42)    
df <- data.frame(Y=rnorm(5),Z=rnorm(5))

выход

   Y           Z  
1  1.3709584 -0.10612452  
2 -0.5646982  1.51152200  
3  0.3631284 -0.09465904  
4  0.6328626  2.01842371  
5  0.4042683 -0.06271410

так потолок

df4$Z <- ceiling(df4$Z)

создает вывод

   Y         Z
1  1.3709584 0
2 -0.5646982 2
3  0.3631284 0
4  0.6328626 3
5  0.4042683 0

если вы хотите получить потолок Y используйте:

df4 <- data.frame(Y=rnorm(5))
df4$Z <- ceiling(df4$Y)
Другие вопросы по тегам