Как я могу объединить (объединить, объединить) два значения? Например у меня есть:
tmp = cbind("GAD", "AB")
tmp
# [,1] [,2]
# [1,] "GAD" "AB"
Моя цель - объединить два значения в «tmp» в одну строку:
tmp_new = "GAD,AB"
Какая функция может сделать это для меня?
Ответы:
это путь Как указывалось в предыдущих постерах, паста может делать две вещи:
объединить значения в одну «строку», например
где аргумент
sep
указывает символ (ы), который будет использоваться между аргументами для объединения или свертывания векторов символовгде аргумент
collapse
указывает символ (ы), который будет использоваться между элементами вектора, который будет свернут.Вы даже можете комбинировать оба:
Надеюсь это поможет.
источник
paste()
для меня. Например,paste(c('a','b'),'blah', c(1,2,3))
результаты в"a blah 1" "b blah 2" "a blah 3"
. По сути, он создает вектор строк такой же длины, что и самый длинный вектор, который был передан, и зацикливает другие векторы / строки на ту же длину. Там много места для случайного поведения.paste0("blah", 1:3)
чтобы получить"blah1" "blah2" "blah3"
.data.frame()
не позволяет вам сделать это, если векторы не кратны друг другу.matrix()
выкладывает предупреждения, ноarray()
не делает. Вид раздражает. На самом деле, они все должны выдавать предупреждения, если не установлена какая-либо опция ...help.search()
это удобная функция, например,приведет тебя к
paste()
.источник
Для первого отсутствия
paste()
ответа мы можем посмотретьstringr::str_c()
(и затемtoString()
ниже). Этот вопрос уже давно не существует, поэтому я считаю полезным упомянуть, что он также существует.Очень прост в использовании, как вы можете видеть.
Из описания файла документации, он прекрасно подходит для этой проблемы.
Добавлено 13.04.2016 : Это не совсем то же самое, что и желаемый результат (дополнительное пространство), но никто также не упомянул об этом.
toString()
это в основном версияpaste()
сcollapse = ", "
жестким кодом, так что вы можете сделатьисточник
paste
не работает с векторами. Другой вариант естьdo.call(paste, as.list(tmp))
.Как уже отмечали другие,
paste()
это путь. Но это может раздражать необходимость вводитьpaste(str1, str2, str3, sep='')
каждый раз, когда вы хотите разделитель не по умолчанию.Вы можете очень легко создавать функции-оболочки, которые делают жизнь намного проще. Например, если вы обнаружите, что действительно часто объединяете строки без разделителя, вы можете сделать:
или если вы часто хотите объединить строки из вектора (например,
implode()
из PHP):Позволяет вам сделать это:
Также есть встроенный модуль
paste0
, который делает то же самое, что и мойimplode
, но без использования пользовательских разделителей. Это немного более эффективно, чемpaste()
.источник
Я нашел это в Google, выполнив поиск строк R : http://stat.ethz.ch/R-manual/R-patched/library/base/html/paste.html.
источник
В качестве альтернативы, если вашей целью является вывод непосредственно в файл или стандартный вывод, вы можете использовать
cat
:источник
paste
ответ через 4 года, когда уже есть около десяткаpaste
ответов?Другой путь:
Это иногда полезно, чем
paste()
функция.%s
обозначает место, где субъективные строки будут включены.Обратите внимание, что это пригодится, когда вы попытаетесь построить путь:
вывод
источник
paste
недостаточно гибок, если вы хотите добавить что-то к строке.Вы можете создать свой собственный оператор:
Вы также можете переопределить
&
операторы 'и' ( ):возиться с базовым синтаксисом некрасиво, но при использовании,
paste()/paste0()
если вы работаете только со своим собственным кодом, вы можете (почти всегда) заменить логический& and
оператор*
и сделать умножение логических значений вместо использования логических 'и &'источник
paste0(as.matrix(iris[1:4]) , as.matrix(iris[1:4]))
иas.matrix(iris[1:4]) %&% as.matrix(iris[1:4])
Учитывая матрицу tmp, которую вы создали:
Я предполагаю, что есть некоторая причина, почему вы создаете матрицу с использованием cbind, а не просто:
источник
Рассмотрим случай, когда строки являются столбцами, а результатом должен быть новый столбец:
При желании пропустите
[c("a", "b")]
подмножество, если нужно вставить все столбцы.источник
stringi, stringr
библиотеки быстрее.Еще один не вставленный ответ:
куда
источник
glue
это новая функция, класс данных и пакет, который был разработан как частьtidyverse
, с большим количеством расширенной функциональности. Он сочетает в себе функции из paste, sprintf и других предыдущих ответов.Создано 2019-03-06 пакетом представлением (v0.2.1)
Да, для простого примера в этом вопросе это излишне, но для многих ситуаций это просто. (см. https://glue.tidyverse.org/ )
Быстрый пример по сравнению
paste
сwith
ниже.glue
Код был немного проще набрать и выглядит немного легче читать.Создано 2019-03-06 пакетом представлением (v0.2.1)
источник