2017-11-16 15 views
0

Rスクリプトの行数を数える方法があるかどうかを知りたいと思います。Rスクリプトのコード行数を取得する

コメント行を無視します。

インターネット上で解決策が見つかりませんでした。しかし、多分私は何かを逃した。

答えて

1

あなたはこれを試みることができる:

library(magrittr) 
library(stringr) 
library(readr) 

number_of_lines_of_code <- function(file_path){ 
file <- readr::read_file(file_path) 
file_lines <- file %>% stringr::str_split("\n") 
first_character_of_lines <- file_lines %>% 
    lapply(function(line)stringr::str_replace_all(line," ","")) %>% 
    lapply(function(line)stringr::str_sub(line,1,1)) %>% 
    unlist 
sum(first_character_of_lines != "#" & first_character_of_lines != "\r") 
} 

number_of_lines_of_code("your/file/path.R") 
+0

それはほとんどそうです。空行は数えられませんでした。しかし、それはコメント行を数えます。 – celianou

+0

私はそれを更新しました。「sum(first_character_of_lines!= "#"&first_character_of_lines!= "\ r")」によって 'sum(first_character_of_lines!="# ")'を置き換えました。 –

+0

Perfect!ありがとうございます:) – celianou

0

それは非常に有用な情報のように見えるしていませんが、あなたはこれを行うことができます。

script <- "#assign 
a <- 1 

b <- 2 
" 

nrow(read.table(text = script, sep = "°")) 
[1] 2 

それはほとんどのRスクリプトでそうな文字だから、私は、セパレータとして°を使用しています。必要に応じて調整してください。

はもちろん、これはR.

の外にはるかに効率的に行うことができ
+0

たぶん私は別の9月を使用する必要がありますが、私はどちらかわかりません。しかし、それは動作しませんでした、それは空のものもすべての行を数える – celianou

+0

まあ、あなたはテストのためのスクリプトを提供していません... – Roland

1

例は、8行でtester.Rをのsctipt、1コメント:

x <- 3 
x+1 

x+2 

#x+4 

x*x 

コメントなしの行数をカウントする機能:

foo <- function(path) { 
    rln <- read_lines(path) 
    rln <- rln[-grep(x = trimws(rln) , pattern = '^#')] 
    rln <- rln[ trimws(rln) != ''] 
    return(length(rln)) 
} 

試運転:

> foo('tester.R') 
[1] 7 
+0

はい、それは動作します!しかし空の行を数えない方法はありますか? – celianou

+0

@celianou尋ねる前に編集しました。 –

+0

アップデートでも同じ結果が得られます – celianou

関連する問題