Функция в функции rep()

Почему

rep(message("TEST"),3)
rep(c(message("TEST")),3)

>
TEST
NULL
> 

не то же самое, что

c(message("TEST"),message("TEST"),message("TEST"))

>
TEST
TEST
TEST
NULL
> 

Как мне получить второй результат с помощью функции rep()?

ИЗМЕНИТЬ:

Очень "удобно" мы могли бы использовать:

invisible(lapply((rep(c(quote(message("TEST"))),3)),eval))
> 
TEST
TEST
TEST
> 

person Andre Elrico    schedule 13.12.2017    source источник
comment
Вместо этого вы можете использовать message(rep("TEST\n", 3))   -  person talat    schedule 13.12.2017
comment
Мне это нравится. Я буду использовать его в своем коде.   -  person Andre Elrico    schedule 13.12.2017
comment
В дополнение к редактированию, invisible(replicate(3, message("TEST")))   -  person akrun    schedule 13.12.2017


Ответы (1)


С 1_:

«rep» повторяет значения в «x».

значение из message("TEST") равно NULL.

Вы можете проверить это, например.

m <- message("TEST");
m;
#NULL
rep(m, 3);
#NULL
rep(NULL, 3);
#NULL

Что касается вашего второго вопроса, см. комментарий @docendodiscimus.

person Maurits Evers    schedule 13.12.2017
comment
да, я только что понял это. message не имеет возвращаемого значения. - person Andre Elrico; 13.12.2017