从包含 R 中的字符串的 Dataframe 中删除列

Removing Column from Dataframe that contains a string in R

我正在尝试创建一个允许人们输入数据的闪亮应用程序。为了使数据可用,我试图删除任何在数据帧 df 中具有字符串实例的列。这个任务在 python 中非常简单,但在 R 中变得相当困难。

我的第一次尝试是

df[ ,colSums(apply(df, MARGIN=c(1,2),FUN=is.character))==0]

问题是应用隐式调用 as.matrix,这(据我所知)将生成一个具有混合值的数据框,因此 is.character 如果任何列中有字符串,则删除每一列!

我尝试了几个循环遍历每个单元格并尝试删除一列,但这也失败了。

任何帮助或指点都将非常有帮助!

您不能拥有混合类型的列(至少在 R 中不能)。因此,一列可以有数字、字符或因子值,但不能有来自不同类型的值。所以你只需要检查列是否是字符,而不是每个值。尝试:

df <- data.frame(c1 = 1:10, c2 = letters[1:10], c3 = sample(10, 10), c4 = letters[sample(10,10)], stringsAsFactors = FALSE)
df[!sapply(df, is.character)]
   c1 c3
1   1  4
2   2 10
3   3  5
4   4  6
5   5  7
6   6  3
7   7  9
8   8  8
9   9  2
10 10  1