Печать заголовка каждый раз, когда я пытаюсь показать результаты таблицы - PullRequest
1 голос
/ 25 февраля 2020
results <- data.frame(Theta = rep(0,20), Expectation = rep(0,20), Sd = rep(0,20), Skewness = rep(0,20))

for (theta in 1:20){
  lindley.plot(theta)
}

У меня есть свой код для создания набора данных, а затем я пытаюсь добавить переменные для каждой тета в строку в наборе данных. Однако, когда я распечатываю это, заголовки столбцов появляются каждый раз:

#   Theta Expectation       Sd Skewness
# 1     1         1.5 1.322876 1.727838
# 
#   Theta Expectation        Sd Skewness
# 2     2   0.6666667 0.6236096  2.06173

Как это исправить?

1 Ответ

0 голосов
/ 25 февраля 2020

Все вычисления в вашей функции векторизованы, так что вы можете ввести вектор без * oop.

lindley.plot <- function(theta){
  expectation = (theta + 2)/(theta^2 + theta)  
  sd = (sqrt(theta^2 + 4*theta + 2))/(theta^2 + theta)
  skewness = (4*theta^3 + 12*theta^2 + 12*theta + 4)/(theta^2 + 4*theta + 2)^(3/2)
  return(data.frame(theta, expectation, sd, skewness))
}

lindley.plot(1:20)

#    theta expectation         sd skewness
# 1      1  1.50000000 1.32287566 1.727838
# 2      2  0.66666667 0.62360956 2.061730
# 3      3  0.41666667 0.39965263 2.320856
# 4      4  0.30000000 0.29154759 2.522038
# 5      5  0.23333333 0.22852182 2.681433
# 6      6  0.19047619 0.18747638 2.810390
# ...

Если функция становится более сложной и не векторизованной, используйте lapply для ввода каждый элемент вектора.

do.call(rbind, lapply(1:20, lindley.plot))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...