Из документации dput ():
dput: записывает текстовое представление ASCII-объекта R в файл или соединение или использует его для воссоздания объекта. . А для вывода функции: " Для dput, первый аргумент невидим "
Первая строка в выводе - это печать dput () на экран, а вторая - это то, что возвращается с использованием выхода функции для поднабора. Вы увидите похожее поведение из deparse()
, за исключением того, что deparse()
ничего не выводит на экран, поэтому первой строки не будет:
mtcars[, deparse(unique(mtcars$gear))]
#[1] "c(4, 3, 5)"
Лучшим примером поведения dput () является использование функции print ():
print(dput(unique(mtcars$gear)))
#c(4, 3, 5) # this line is what dput() prints to the screen
#[1] 4 3 5 # this line comes as a result of print the return value of dput()
Если вы добавите имя файла в функцию dput()
, вы увидите, что первая строка больше не печатается, а только вторая (возвращаемое значение dput()
выводится на экран:
print(dput(unique(mtcars$gear), file="xxx.txt"))
# [1] 4 3 5
Может быть проще понять, как это работает на следующем примере:
# Define a function that prints a message and returns the object using invisible() function (which suppress the output)
my.f <- function(x) {message(x); invisible(x)}
# This will print the message, but will not print the output of the function
my.f(777)
# 777
# This will print the message and force printing the return value
print(my.f(777))
# 777
# [1] 777
dput()
работает аналогичным образом, за исключением того, что вместо функции message () он либо печатает содержимое в файл (если указано имя), либо отправляет оператор печати на стандартный вывод.