我正在尝试对包含“disagreement”一词的列进行子集化,但保留包含ID信息的前三列。如何调整以下代码以保留ID列?
df.disagreement <- df[ , grepl("disagreement", names( df ) )]
答案 0 :(得分:2)
不确定这是不是这个意思:
df.disagreement <- df[ , c(TRUE, TRUE, TRUE, grepl("disagreement", names( df )[-c(1:3)] ))]
?
答案 1 :(得分:2)
这是select()
dplyr
出生的情况:
library(dplyr)
select(df, 1:3, contains("disagreement"))
答案 2 :(得分:1)
df.disagreement <- df[ , names(df) %in% c("index1", "index2", "index3") |
grepl("disagreement", names( df ) )]
OR
df.disagreement <- df[ , names(df) %in% names(df)[1:3] |
grepl("disagreement", names( df ) )]
也许解释也很有价值......所以,你的grepl语句会产生一个TRUE / FALSE的向量,其长度为df中的名字数。因此,上面的解决方案使用TRUE / FALSE向量并使用逻辑OR(|)和另一个TRUE / FALSE向量(%(%)中的名称(df)%)。您也可以使用另一个语句执行此操作,只需添加另一个语句或者&amp;并保持罗林'。