从R中的数据框中删除所有字符串?

时间:2010-08-11 16:55:34

标签: string r spreadsheet

所以我在R中有一个数据框,它包含整数,NA和单元格内随机分组的字符串。每个单元只有一种数据类型。我想知道的是如何将包含字符串的所有单元格更改为NA。知道怎么做吗?

2 个答案:

答案 0 :(得分:5)

如果您的数据框(df)实际上是除了NAs和垃圾之外的所有整数,那么以下内容将对其进行转换。

df2 <- data.frame(lapply(df, function(x) as.numeric(as.character(x))))

你会对强制引入的NAs发出警告,但这只是所有那些非数字字符串转变为NA。

以下代码也有效,并且更简洁但运行速度更慢。

df2 <- apply(df, 2, function(x) as.numeric(as.character(x)))

如果您只想转换所选列,则可以使用稍微复杂的命令。首先,您需要确定要转换的列。也许您将它们保存为您希望更改的列的逻辑向量。

df2 <- cbind(df[,!columnsToChange], apply(df[,columnsToChange], 2, function(x) as.numeric(as.character(x)))

这会使事情变得无序,但它会让你很容易得到你想要的东西。

答案 1 :(得分:3)

首先,如果是data.frame,则每列的类型相同。所以做class(data[,3])之类的事情来查询第三列的类。然后,您可以对给定列使用as.numeric()等进行转换。或者,根据您的问题,data[,3] <- NA以防您知道要替换该列。