Разница между пастой() и paste0()
Будучи новичком в R, кто-то может объяснить разницу между paste()
и paste0()
, то, что я понял из какого-то сообщения, заключается в том, что
paste0("a", "b") === paste("a", "b", sep="")
Даже я пробовал что-то вроде этого
a <- c("a","b","c")
b <- c("y","w","q")
paste(a,b,sep = "_")
**output**
"a_y" "b_w" "c_q"
с помощью paste0()
a <- c("a","b","c")
b <- c("y","w","q")
paste0(a,b,sep = "_")
**output**
"ay_" "bw_" "cq_"
Это только то, что paste()
использует разделитель между элементами и paste0()
использует разделитель после элементов?
Ответы
Ответ 1
Как объясняется в этом блоге Тайлером Ринкером:
paste
имеет 3 аргумента.
paste (..., sep = " ", collapse = NULL)
...
- это материал, который вы хотите вставить вместе, а sep и рухнуть, ребята, чтобы получить его сделанный. Есть три основных вещи, которые я вставляю вместе:
- Букет отдельных строк символов.
- 2 или более строк, вставленных в элемент для элемента.
- Одна строка сжимается вместе.
Вот пример каждого, хотя и не с правильными аргументами
paste("A", 1, "%")
# Букет отдельных строк символов.
paste(1:4, letters[1:4])
# 2 или более вставленный элемент для элемент.
paste(1:10)
# Одна строка сжимается вместе. Здесь правило sep/collapse для каждого:
- Буква отдельных строк символов - вы хотите, чтобы sep
- 2 или более строк, вставленных в элемент для элемента. - Вы хотите, чтобы sep
- Одна строка сжимается вместе. - Смушин требует краха.
paste0
сокращается для: paste(x, sep="")
Таким образом, это позволяет нам быть более ленивыми и более эффективно.
paste0("a", "b") == paste("a", "b", sep="") ## [1] TRUE
Ответ 2
Позвольте мне выразить это простыми словами.. paste0
автоматически исключит пространство в вашей конкатенации.
Например, я хочу создать учебный и тестовый путь..здесь код..
> Curr_date=format(Sys.Date(),"%d-%b-%y")
> currentTrainPath = paste("Train_",Curr_date,".RData")
> currentTrainPath
[1] "Train_ 11-Jun-16 .RData"
> Curr_date=format(Sys.Date(),"%d-%b-%y")
> currentTrainPath = paste0("Train_",Curr_date,".RData")
> currentTrainPath
[1] "Train_11-Jun-16.RData"
Ответ 3
Простыми словами,
paste()
похож на конкатенацию с использованием коэффициента разделения,
тогда как
paste0()
похож на функцию добавления, используя коэффициент разделения.
Добавив еще несколько ссылок на вышеприведенное обсуждение, ниже try outs могут быть полезны, чтобы избежать путаницы:
> paste("a","b") #Here default separation factor is " " i.e. a space
[1] "a b"
> paste0("a","b") #Here default separation factor is "" i.e a null
[1] "ab"
> paste("a","b",sep="-")
[1] "a-b"
> paste0("a","b",sep="-")
[1] "ab-"
> paste(1:4,"a")
[1] "1 a" "2 a" "3 a" "4 a"
> paste0(1:4,"a")
[1] "1a" "2a" "3a" "4a"
> paste(1:4,"a",sep="-")
[1] "1-a" "2-a" "3-a" "4-a"
> paste0(1:4,"a",sep="-")
[1] "1a-" "2a-" "3a-" "4a-"