我有一些用矩阵保存的数据,但格式不太方便。所有列向量都是字符类型。
datamatrix <- structure(c("1", "2", "3", "4", "0.9301", "0.93", "0.9286", "0.9209",
"0.9", "0.8064", "0.7947", "0.7607", "0.8042", "0.7847", "0.7832",
"0.7578", "0.7487", "0.7105", "0.6566", "0.5951", "0.6951", "0.677",
"0.6588", "0.5922", "0.6889", "0.6471", "0.6524", "0.5932"), .Dim = c(4L,
7L))
我的目标是将这个矩阵转换为数据框,并将列向量转换为数值型。
我尝试了以下步骤:
1)
datamatrix2 <- as.data.frame(datamatrix)
datamatrix2 <- as.numeric(datamatrix2)
这会导致错误:
"Error: (list) object cannot be coerced to type 'double'"
2) 所以我尝试使用sapply:
datamatrix3 <- as.data.frame(sapply(datamatrix, as.numeric))
这将所有我之前拥有的列放在一个长列中。
3) 当我在已经转换为数据框(但仍然是字符向量)的数据上使用来自2)的apply函数时,它会从第一列(1,2,3,4)中取值并将其放入所有其他列中(但是以降序方式)。
datamatrix4 <- as.data.frame(sapply(datamatrix2, as.numeric))
stringsAsFactors = FALSE
。请看编辑后的答案。 - Phil