正在从数据帧中删除在R中包含字符串的列
我正在尝试创建一个闪亮的应用程序,允许人们输入数据。为了使数据可用,我试图删除在dataframe df中具有字符串实例的任何列。这项任务在python中非常简单,但在R中变得相当困难 我的第一次尝试是正在从数据帧中删除在R中包含字符串的列,r,string,parsing,character,frames,R,String,Parsing,Character,Frames,我正在尝试创建一个闪亮的应用程序,允许人们输入数据。为了使数据可用,我试图删除在dataframe df中具有字符串实例的任何列。这项任务在python中非常简单,但在R中变得相当困难 我的第一次尝试是 df[ ,colSums(apply(df, MARGIN=c(1,2),FUN=is.character))==0] 问题是apply隐式调用as.matrix(据我所知),这将使数据帧具有混合值,因此is.character会在任何列中包含字符串时删除每一列 我尝试了几个循环来遍历每个单元
df[ ,colSums(apply(df, MARGIN=c(1,2),FUN=is.character))==0]
问题是apply隐式调用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
df