[英]R - keep only columns with column names that match a string
我對 R 比較陌生,我很幸運在這里找到了答案,但是在嘗試了 2 天之后,這個問題讓我難倒了。
我有一個列名的數據框,如下所示:
TargetID sample1.beta sample1.avg sample1.error sample1.pval sample2.beta sample2.avg sample2.error sample2.pval
這對數千個樣本重復。 我需要為每條數據創建多個單獨的數據框:一個用於 beta,一個用於 avg,一個用於錯誤,一個用於 pval。 我還需要在所有數據框中保留帶有 TargetID 的第一列。 生成的數據框將具有如下列名:
TargetID sample1.beta sample2.beta sample3.beta
目標ID sample1.pval sample2.pval sample3.pval
等。
我找到了對數據框進行子集化的答案,但它們似乎不適用於選擇包含特定字符串的所有列(並保留第一列)。
在使用 awk 導入到 R 之前,我也一直在探索使用 txt 文件是否更好地完成此操作。
在 "[" 的第二個位置使用grepl
或grep
,其模式包含TargetID
和應用於names(dfrm_name)
的子集字符串:
avg_sub <- dfrm[ , grepl( "^TargetID|avg$", names(dfrm) ]
“^”模式匹配字符串的開頭,而“$”模式匹配字符串的結尾。
您可以嘗試(因為您不使用mtcars
提供示例數據):
library(dplyr)
# select the column mpg and all the columns containing an r
head(mtcars %>% select(mpg, contains("r")))
mpg drat gear carb
Mazda RX4 21.0 3.90 4 4
Mazda RX4 Wag 21.0 3.90 4 4
Datsun 710 22.8 3.85 4 1
Hornet 4 Drive 21.4 3.08 3 1
Hornet Sportabout 18.7 3.15 3 2
Valiant 18.1 2.76 3 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.