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") 的列
答案 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))]