我很難將一些計算應用於列表中的數據框。實際上,我從一開始就失敗了,當時我試圖從每個data.frame中挑選一些行。如何從R列表中的所有數據框中選擇一些行?
這段代碼生成的東西與我的數據非常相似,儘管我的列表中有更多更長的數據幀。
ROI <- c("0", "1", "blank")
Red <- c(17, 48, 1.9)
Green <- c(13, 0.2, 1.1)
df1 <- data.frame(ROI, Red, Green, stringsAsFactors = FALSE)
df1_tb <- tbl_df(df1)
ROI <- c("0", "1", "2", "3", "blank1", "blank2")
Red <- c(14, 22, 53, 11, 0.5, 0.7)
Green <- c(110, 109, 57, 11, 2, 7)
df2 <- data.frame(ROI, Red, Green, stringsAsFactors = FALSE)
df2_tb <- tbl_df(df2)
my_list <- list(df1_tb, df2_tb)
> my_list
[[1]]
# A tibble: 3 × 3
ROI Red Green
<chr> <dbl> <dbl>
1 0 17.0 13.0
2 1 48.0 0.2
3 blank 1.9 1.1
[[2]]
# A tibble: 6 × 3
ROI Red Green
<chr> <dbl> <dbl>
1 0 14.0 110
2 1 22.0 109
3 2 53.0 57
4 3 11.0 11
5 blank1 0.5 2
6 blank2 0.7 7
我想嘗試什麼是找到行時ROI列或包含「空白」,計算意味着這些行對每個數據幀,然後從行的其餘部分中減去這些值。 我想結合grepl
和filter
爲filter(my_list, grepl("blank", my_list, my_list$ROI))
,但是這給了我以下錯誤:
Error in UseMethod("filter_") :
no applicable method for 'filter_' applied to an object of class "list"
當我嘗試將這種方法用於在我的名單,它的工作原理單一元素;
> k <- filter(df2, grepl("blank", df2$ROI))
> k
ROI Red Green
1 blank1 0.5 2
2 blank2 0.7 7
我也嘗試使用lapply
或它的一些嵌套形式,但沒有成功。在這裏,當我想寫類似
lapply(my_list, filter, grepl("blank", my_list$ROI))
我不知道我應該如何在這種情況下,飼料grepl
的,所以它應該開始在每個數據幀校驗列,但沒有對象my_list
。 我不是很擅長R,我想我在這裏失蹤,命令lapply或sapply函數工作。或者,也許我應該改變我如何從一開始就嘗試做...
我該如何解決我的問題?任何建議,非常感謝!
的'lapply'嘗試接近,看看其他地方使用'lapply'的例子。我認爲它應該是像'lapply(my_list,function(df)filter(df,grepl(「blank」,ROI))%>%...)''''''''''是你想要的方式計算。 – vincentmajor