如何查找具有非英语值的列的名称?R

如何查找具有非英语值的列的名称?R,r,R,我有一个如图所示的数据,有些列有非英语单词,如何使用R编程找到这些列名 数据和预期结果如图所示 首先是一些可复制的数据: df <- data.frame( Var1 = c("some", "data", "ß", "کابل"), Var2 = c("کابل", "data", "کابل", "data"), Var3 = c("some", "data", "more", "data"), Var4 = c("some", "data", "more", "dat

我有一个如图所示的数据,有些列有非英语单词,如何使用R编程找到这些列名

数据和预期结果如图所示


首先是一些可复制的数据:

df <- data.frame(
  Var1 = c("some", "data", "ß", "کابل"),
  Var2 = c("کابل", "data", "کابل", "data"),
  Var3 = c("some", "data", "more", "data"),
  Var4 = c("some", "data", "more", "data")
)
df
编辑:

要仅获取名称,只需将整个语句插入
名称

names(df[, -which(grepl("[^ -~]", apply(df, 2, paste0, collapse = " ")))])
[1] "Var3" "Var4"
基准R:

lapply(df, function(x){
ifelse(grepl("\\@", x), x, gsub(paste0(c(letters, LETTERS), collapse = "|"), "", x))})
返回名称:

names(df)[sapply(df, function(x) {
  ifelse(grepl("\\@", x), FALSE,
         any(gsub(paste0(
           c(letters, LETTERS), collapse = "|"
         ), "", x) == ""))
})]

很高兴它起作用了。请考虑勾选左上角的箭头,表示您已接受答案。
names(df)[sapply(df, function(x) {
  ifelse(grepl("\\@", x), FALSE,
         any(gsub(paste0(
           c(letters, LETTERS), collapse = "|"
         ), "", x) == ""))
})]