部分匹配字符串将R中的df列删除

时间:2020-05-21 13:39:29

标签: r

假设我有以下代码。

df1 <- data.frame(matrix(ncol = 6, nrow = 0))
df2 <- data.frame(matrix(ncol = 3, nrow = 0))
x <- c("A1.1gender", "A1.2gender", "A1.3gender", "A1.4gender", "A1.5gender", "A1.6gender")
y <- c("A1.1age", "A1.2age", "A1.3age")
colnames(df1) <- x
colnames(df2) <- y

如何使用df2中的部分字符串匹配从df1中删除A1.4,A1.5和A1.6列?

1 个答案:

答案 0 :(得分:0)

此解决方案使用gsub\\1中的向后引用来调用A1.之后的关键数字,即df1df2的列名具有共同的符号(即“ 1”,“ 2”和“ 3”)以及%in%以匹配这些列;然后,df1被子集到这些匹配的列名称上:

df1[,  gsub("A1\\.(\\d).*", "\\1", colnames(df1)) %in% gsub("A1\\.(\\d).*", "\\1", colnames(df2))]
[1] A1.1gender A1.2gender A1.3gender
<0 rows> (or 0-length row.names)

这是您要找的吗?

相关问题