2016-11-18 3 views
0

私は関数を初めて使い、分割を発見しました。 私はsplit関数からのデータフレームのリストを持っています。各データフレームについて、特定の正規表現の数を数え、全体的なカウントをベクトルにダンプします(これをすべてのデータフレームの行列に追加します)。分割からデータフレームのリストのカスタム関数を作成するには

その簡単なカウントを作成するために、私は、リスト内のすべてのデータフレームのために同じことを行います関数にこれを変換する方法を知りませんが:ここでは

される私の試みこれまで

lapply(PClst, function(x) nrow(x[grepl(".*denoma.*", x$Dx, perl = TRUE, ])) 

が、私はエラーを取得:

Error in x$Dx : $ operator is invlaid for atomic vectors 
+0

を? –

+0

Fyi、再現可能な例を提示するほうがはるかに優れています(Nathanの回答のように)。 – Frank

+0

エラーメッセージを読むことは非常に便利です。 Rはエラーがリストにはないが、PClstオブジェクトにあることを伝えています.PClstオブジェクトは原子ベクトルであり、そのため 'x $ Dx'構文には適合しません。 –

答えて

2

我々はこのような何か行うことができます:

list <- split(mtcars, mtcars$cyl) 
sapply(list, function(x) sum(grepl("2", x$carb))) 

我々は出力として名前のベクトルになるだろう:あなたはPClstのサンプルを共有できる

4 6 8 
6 0 4 
+0

これで、grepを含む行数の合計が得られますか? –

+1

はい、 '論理'ベクトルの 'sum()'は 'TRUE'の総数を返します – Nate

+1

もっと標準的なのはsplit-sapplyの代わりにtapplyを使うことです:' tapply(grepl( "2"、mtcars $ carb )、mtcars $ cyl、sum) ' – Frank

関連する問題