我是 R 的新手,我有一个从文件中读取的大型数据框。里面的数据有列数据都是“正常”字符串,比如“Iceland”,但它也有包含数字但作为字符串的列,比如“25.1”。有没有办法将所有仅包含数字的字符串转换为数字?
我知道如何为一列做这件事:var <- as.numeric(dataFrame$var)
但这不是很有效,因为我的数据框有大约 160 列。
我尝试按如下方式转换整个数据框,但它不起作用:
DF2 <- lapply(DF1, function(x) {
ifelse(!is.na(suppressWarnings(as.numeric(x))), as.numeric(as.character(x)), x)
})
使用 DF2$colName
测试列返回“字符”,而不是“数字”。这似乎也将数据框变成了列表。
作为旁注,我已经使用 read.csv()
读取了数据框除了文件名之外没有任何参数。此外,列不会混合类型,它要么都是普通字符串,要么都是数字字符串。
谢谢!
最佳答案
我们可以使用type.convert
函数
示例数据
df <- data.frame(a=c("2.1"), b='iceland')
检查原始示例数据中的类:
df |> lapply(\(x) class(x))
$a
[1] "character"
$b
[1] "character"
转型
df <- type.convert(df, as.is =TRUE)
测试输出
df |> lapply(\(x) class(x))
$a
[1] "numeric"
$b
[1] "character"
关于r - 如何将数据框中的所有数字字符串转换为 R 中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73749551/