2016-11-18 28 views
0

我是新來的功能和剛發現的拆分。 我有一個分裂函數的數據框的列表。對於每個數據幀,我想計算一個特定正則表達式的數量,然後將矢量中的總數轉儲(然後我打算將其添加到所有數據框的矩陣中)。如何爲分割的數據框列表創建自定義函數

雖然它容易造成計數,我不知道如何再翻譯成會做同樣的事情在列表中的所有dataframes的功能如下:

這是我嘗試到目前爲止

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

,但我得到的錯誤:

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

你能分享PClst的樣本? –

+0

Fyi,提出一個可重複的例子要好得多(就像Nathan在他的回答中所做的那樣)。 – Frank

+0

閱讀錯誤消息非常有用。 R告訴你錯誤不在列表中,而是在PClst對象中,這恰好是一個原子向量,因此,它不適合'x $ Dx'語法。 –

回答

2

,我們可以做這樣的事情:

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

我們會得到一個名爲向量作爲輸出:

4 6 8 
6 0 4 
+0

那麼sum會給你包含grep的行數呢? –

+1

是的,'邏輯'向量上的'sum()'返回'TRUE'的總數 – Nate

+1

更多的標準是使用tapply而不是split-sapply:'tapply(grepl(「2」,mtcars $ carb ),mtcars $ cyl,sum)' – Frank

相關問題