Как передать значение итерации цикла и использовать его внутри цикла в R? - PullRequest
0 голосов
/ 05 октября 2018

В настоящее время я пытаюсь запустить скрипт в RStudio, часть которого включает в себя удаление пунктуации из строки во фрейме данных.До сих пор это был особенно трудоемкий шаг, поэтому я хочу попробовать вставить несколько выходных сообщений, чтобы убедиться, что он не вышел из строя и все еще работает.

Моя идея состояла в том, чтобы попытаться поставить другойцикл внутри цикла, удаляющий пунктуацию, который выводил бы напечатанное сообщение с указанием процента завершения шага, но только когда процентное значение было целым числом, чтобы не печатать миллион сообщений.

Я пытался это сделатьс чем-то вроде ниже, но большая проблема здесь в том, что я вполне уверен, что я неправильно использую переменную «i», так что это никогда не сработает так, как я написал.Поэтому я надеюсь на исправления или альтернативы тому, что у меня есть в цикле if.

    for(i in 1:nrow(eqtls)){

      eqtls$gene_id_new[i]=rem_punct(eqtls$gene_id[i])

      if((i/nrow(eqtls)*(100))%%1=0){

        completion = (i/nrow(eqtls))*100

        message(sprintf("Percent complete: %s\n", completion))
      }
    }

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

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

В одной строке вывода:

Данные

eqtls <- data.frame("var1" = rep(paste(LETTERS[1:26],".",LETTERS[26:1],sep = ""),500), 
                    stringsAsFactors = FALSE)

Код

for(i in 1:nrow(eqtls)){
    eqtls$var1[i] <- gsub("\\.","",eqtls$var1[i])
    if((i/nrow(eqtls)*(100))%%1 == 0){
        cat(paste(round((i/nrow(eqtls))*100,0), "%..."))
    }
}

Результат

> 1 %...2 %...3 %...4 %...5 %...6 %...8 %...9 %...10 %...11 %...12 %...
13 %...15 %...16 %...17 %...18 %...19 %...20 %...21 %...22 %...23 %...
24 %...25 %...26 %...27 %...30 %...31 %...32 %...33 %...34 %...35 %...
36 %...37 %...38 %...39 %...40 %...41 %...42 %...43 %...44 %...45 %...
46 %...47 %...48 %...49 %...50 %...51 %...52 %...53 %...54 %...59 %...
60 %...61 %...62 %...63 %...64 %...65 %...66 %...67 %...68 %...69 %...
70 %...71 %...72 %...73 %...74 %...75 %...76 %...77 %...78 %...79 %...
80 %...81 %...82 %...83 %...84 %...85 %...86 %...87 %...88 %...89 %...
90 %...91 %...92 %...93 %...94 %...95 %...96 %...97 %...98 %...99 %...
100 %...
0 голосов
/ 05 октября 2018

Эта ссылка - Как получить индекс в цикле в R должен помочь вам с циклами в R.

В общем - если вы хотите перебрать значение в цикле простоделать -

for(i in eqtls){
    print(i)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...