假设我有以下代码。
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列?
答案 0 :(得分:0)
此解决方案使用gsub
和\\1
中的向后引用来调用A1.
之后的关键数字,即df1
和df2
的列名具有共同的符号(即“ 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)
这是您要找的吗?