从包含 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
我正在尝试创建一个允许人们输入数据的闪亮应用程序。为了使数据可用,我试图删除任何在数据帧 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