Как использовать цикл, чтобы сделать стек в R? - PullRequest
0 голосов
/ 07 октября 2019

Я новичок в этом мире. В настоящее время я работаю с кодами R, чтобы проанализировать некоторые данные последовательности и просто застрял сейчас.

Вот описание некоторых проблем.

Я хотел бы выбрать первое слово $ v3 из данных pat1_01_exonic (115 строк) и сделать его файлом. (Я использовал для этого функцию strsplit)

до сих пор, я пробовал нижеприведенный код 1, и он работал для первой строки. но проблема в том, что я не могу сделать это 115 раз.

так, кажется, что цикл необходим.

Я не совсем уверен в том, чтобы сделать петлю самостоятельно. и, как я ожидал, это не сработало.

для создания стека Я думал об использовании append или rbind или stack.

Может кто-нибудь дать мне совет о том, как решить эту проблему? Большое спасибо заранее

#code1
pat1_01_exonic$V3 <-as.character(pat1_01_exonic$V3)
pat1 <- data.frame(head(strsplit(pat1_01_exonic$V3, ":")[[1]],1))

#code2
for (i in 1: nrow(pat1_01_exonic)) {
  pat1_output <- vector()
  sub[i] <- data.frame(head(strsplit(pat1_01_exonic$V3, ":")[[i]],1))
  pat1_0utput <- append(sub[i])
  i <- i+1
}

Ответы [ 3 ]

1 голос
/ 07 октября 2019

Приведенный ниже код является примером для создания новой переменной "V3_First_Word", которая выбирает первое слово в исходной строке.

Want<-pat1_01_exonic%>%
    mutate(V3_First_Word=word(V3,1,1)) # This creates new varaible and selects first word
0 голосов
/ 07 октября 2019

В base R мы можем использовать read.table

pat1_01_exonic$new_col <- read.table(text = pat1_01_exonic$V3, sep=":",
   header = FALSE, fill = TRUE, stringsAsFactors = FALSE)[,1]
pat1_01_exonic$new_col
#[1] "abc" "afd" "emg"

или strsplit и выбрать первый элемент

sapply(strsplit(pat1_01_exonic$V3, ":"), `[`, 1)

data

pat1_01_exonic <- data.frame(V3 = c("abc:def:avd", "afd:adef", "emg:rvf:temp"), 
              stringsAsFactors = FALSE)
0 голосов
/ 07 октября 2019

Во многих случаях вы можете избежать цикла for в R. Если я вас правильно понял, здесь вы можете использовать sub, чтобы получить первую строку до ":"

pat1_01_exonic$new_col <- sub(":.*", "", pat1_01_exonic$V3)
pat1_01_exonic

#            V3 new_col
#1  abc:def:avd     abc
#2     afd:adef     afd
#3 emg:rvf:temp     emg

данные

pat1_01_exonic <- data.frame(V3 = c("abc:def:avd", "afd:adef", "emg:rvf:temp"), 
                  stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...