Каковы различия между объединением строк с cat () и paste ()?

каковы различия между объединением строк с cat и paste?

в частности, у меня есть следующие вопросы.

  1. почему R не используйте двойные кавычки ("), когда он печатает результаты вызова cat (но он использует кавычки при использовании paste)?

    > cat("test")
    test
    > paste("test")
    [1] "test"
    
  2. почему функции length и mode, которые функции доступные для почти всех объекты в р не "работа" на cat?

    > length(cat("test"))
    test[1] 0
    > mode(cat("test"))
    test[1] "NULL"
    
  3. почему escape-последовательности в стиле C работают с cat, а не С paste?

    > cat("1)Line1n 2)Line2n 3)Line3")
    1)Line1
     2)Line2
     3)Line3
    > paste("1)Line1n 2)Line2n 3)Line3")
    [1] "1)Line1n 2)Line2n 3)Line3"
    
  4. почему правило рециркуляции R не работает с cat?

    > cat("Grade", c(2, 3, 4, 5))
    Grade 2 3 4 5
    > paste("Grade", c(2, 3, 4, 5))
    [1] "Grade 2" "Grade 3" "Grade 4" "Grade 5"
    

1 ответов


cat и paste должны использоваться в самых разных ситуациях.


paste не print

когда вы paste что-то и не назначайте его ничему, оно становится character переменная print - ed использование print.default метод по умолчанию для character, следовательно, цитаты и т. д. Вы можете посмотреть на справку для print.default для понимания того, как изменить внешний вид вывода как.

  • print.default не будет оценивать escape-символы, такие как \n в строке символов.

посмотрите на ответы на это вопрос для того, чтобы захватить выход из cat.


цитируя легко читаемый справке cat (?cat)

объединить и напечатать

описание

выводит объекты, объединяя представления. cat выполняет гораздо меньше преобразования, чем print.

...

подробности

cat полезно для производить выход в определяемых пользователем функциях. Он преобразует свои аргументы в character векторы, связывает их с a один character вектор, добавляет данный sep= string(s) для каждого элемент, а затем выводит их.

стоимостью

нет (невидимый NULL).

cat ничего не возвращает, он будет просто выводить на консоль или другое соединение.

таким образом, если вы пытаетесь запустить length(cat('x')) или mode(cat('x')), работает mode(NULL) или length(NULL), что вернет NULL.


помощь для вставки одинаково полезна и описательна

Конкатенации Строк

описание

обединить векторы после преобразования в character.

....

стоимостью

A character вектор Объединенных значений. Это будет длина ноль, если все объекты, если только коллапс не -NULL в этом случае это одна пустая строка.