Используйте разные разделители в одном и том же операторе вставки R - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь объединить три столбца данных в одном:

Chr    Start    End
1       100      105
2       400      420

Я хочу получить координаты в столбце, и я пытаюсь это:

apply(df, 1, function(x) paste0(i[,1], i[,2], i[,3], sep=c(':', '-')))

Это работает за исключением разделителей, потому что я не получаю «-» в качестве второго разделителя, поэтому мой вывод такой:

coord
1:100:105
2:400:420

В то время как мой желаемый результат будет:

coord
1:100-105
2:400-420

Как я могу использовать второй разделитель в том же операторе вставки?

Ответы [ 3 ]

2 голосов
/ 05 апреля 2020

Вы не можете использовать два символа-разделителя в выражении paste(). Пожалуйста, прочитайте страницу справки ?paste. Там написано:

sep = строка символов для разделения терминов. Не NA_character _.

df$coord <- apply(df, 1, function(x) paste(paste(x[1], x[2] , sep=':'), x[3], sep='-'))
df
#   Chr Start End     coord
# 1   1   100 105 1:100-105
# 2   2   400 420 2:400-420
1 голос
/ 05 апреля 2020

Несколько других альтернатив, чтобы рассмотреть возможность использования dplyr и paste0 или sprintf:

library(tidyverse)

df %>%
  mutate(coord = paste0(Chr, ":", Start, "-", End))

df %>%
  mutate(coord = sprintf("%d:%d-%d", Chr, Start, End))

Выход

  Chr Start End     coord
1   1   100 105 1:100-105
2   2   400 420 2:400-420
0 голосов
/ 05 апреля 2020

Опция с str_c

library(stringr)
library(dplyr)
df %>%
  mutate(coord = str_c(Chr, ":", Start, "-", End))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...