如何删除列名包含特定字符串的列?

时间:2021-05-01 12:43:43

标签: r

 name <- c("Jon", "Bill", "Maria")
 agenn <- c(23, 41, 32)
 agelk <- c(23, 41, 32)
 agepm <- c(23, 41, 32)
 df <- data.frame(name, age,agelk,agepm)
 print (df)

我想删除列名包含 c("epm","enn","jkk") 的列

4 个答案:

答案 0 :(得分:3)

使用 dplyr

library(dplyr)

df %>%
  select(-contains(c("epm", "enn", "jkk")))
#>    name agelk
#> 1   Jon    23
#> 2  Bill    41
#> 3 Maria    32

答案 1 :(得分:3)

使用 data.table%like%

df[,!colnames(df) %like% paste0(c("epm","enn","jkkk"),collapse="|")]
   name agelk
1   Jon    23
2  Bill    41
3 Maria    32

答案 2 :(得分:3)

使用 matches

library(dplyr)
df %>%
   select(-matches('epm|enn|jkk'))
#   name agelk
#1   Jon    23
#2  Bill    41
#3 Maria    32

答案 3 :(得分:2)

这里是 void generateBill() { FILE *fp, *fp1; struct Bill t; int id, found = 0, ch1, brel = 0; char billname[40]; fp = fopen(fbill, "rb"); printf("ID\tName\tPrice\n\n"); while (1) { fread(&t, sizeof(t), 1, fp); if (feof(fp)) { break; } printf("%d\t", t.pid); printf("%s\t", t.pname); printf("%d\t\t\t\n", t.pprice); total = total + t.pprice; } printf("\n\n=================== Total Bill Amount %d\n\n", total); fclose(fp); if (total != 0) { //__fpurge(stdin); printf("\n\n\n Do you want to generate Final Bill[1 yes/any number to no]:"); scanf("%d", &ch1); if (ch1 == 1) { brel = billFileNo(); sprintf(billname, "%s%d", " ", brel); strcat(billname, "dat"); fp = fopen(fbill, "rb"); fp1 = fopen(billname, "wb"); while (1) { fread(&t, sizeof(t), 1, fp); if (feof(fp)) { break; } fwrite(&t, sizeof(t), 1, fp1); } fclose(fp); fclose(fp1); fp = fopen(fbill, "wb"); fclose(fp); } total = 0; } } R 方法:

首先你的代码;)

base

创造你的价值确实下降:

name <- c("Jon", "Bill", "Maria")
agenn <- c(23, 41, 32)
agelk <- c(23, 41, 32)
agepm <- c(23, 41, 32)
df <- data.frame(name, agenn,agelk,agepm)

如果一个字符串存在于另一个字符串中,您可以使用 drop_val <- c("epm","enn","jkk") 检查。因此,让我们对要删除的每个字符串进行循环,并比较它是否存在于 grepl 中。好吧,如果你的字符串都不适合,你就保留它们 -> 否则删除。

colnames(df)

输出:

<块引用>
 df[!grepl(paste0(drop_val,collapse="|" ),names(df))]
相关问题