Подтвердить что ты не робот

Разница между конкатенированием строк символов с помощью paste() vs. cat()?

Каковы различия между конкатенацией строк с cat() и paste()? cat() показывает некоторое неожиданное поведение, как указано ниже: 1) Почему R не использует двойную кавычку (""), когда печатает результаты вызова cat(): например:

cat("test")
## R prints: test

2) Почему функции length() и mode(), которые являются функциями, доступными почти для всех объектов в R, не работают на cat()?

length(cat("test"))
## results: test[1] 0
mode(cat("test"))
## test[1] "NULL"

3) Почему escape-последовательности c-style работают с cat(), но не с paste()?

cat("1)Line1\n 2)Line2\n 3)Line3")
paste("1)Line1\n 2)Line2\n 3)Line3")

4) Почему правило утилизации R не работает с cat()?

cat("Grade",c(2,3,4,5))
## results: Grade 2 3 4 5
paste("Grade",c(2,3,4,5))
## "Grade 2" "Grade 3" "Grade 4" "Grade 5"

Большое спасибо за вашу помощь.

4b9b3361

Ответ 1

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

паста не печатается

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

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

Посмотрите на ответы на question, чтобы получить вывод из cat


Цитата из легко читаемой справки для cat (?cat)

Конкатенация и печать

Описание

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

...

Подробнее

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

Значение

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

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

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


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

Конкатенатные строки

Описание

Переключить векторы после преобразования в символ.

....

Значение

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