【发布时间】:2014-09-03 22:22:06
【问题描述】:
您好,我有一个字符表,我正在尝试将其转换为数字:
vec1 <- c("B","D","E","NA")
vec2 <- c("B","D","E","NA")
vec3 <- c("B","C","E","NA")
vec4 <- c("B","D","E","NA")
vec5 <- c("B","NA","E","E")
vec6 <- c("B","NA","NA","NA")
mat1 <- (cbind(vec1,vec2,vec3,vec4,vec5,vec6))
mat1
# vec1 vec2 vec3 vec4 vec5 vec6
#[1,] "B" "B" "B" "B" "B" "B"
#[2,] "D" "D" "C" "D" "NA" "NA"
#[3,] "E" "E" "E" "E" "E" "NA"
#[4,] "NA" "NA" "NA" "NA" "E" "NA"
mat1[mat1 == "NA"] <- 0
mat1[mat1 != 0] <- 1
mat1
# vec1 vec2 vec3 vec4 vec5 vec6
#[1,] "1" "1" "1" "1" "1" "1"
#[2,] "1" "1" "1" "1" "0" "0"
#[3,] "1" "1" "1" "1" "1" "0"
#[4,] "0" "0" "0" "0" "1" "0"
mat2
# vec1 vec2 vec3 vec4 vec5 vec6
#[1,] 2 2 2 2 2 2
#[2,] 2 2 2 2 1 1
#[3,] 2 2 2 2 2 1
#[4,] 1 1 1 1 2 1
mat2 <- sapply(as.data.frame(mat1), as.numeric)
这是可以使用的,即我可以从所有值中减去 1 以获得原始引用值,但是我如何简单地将引用值更改为数值?
谢谢,
马特
【问题讨论】:
-
mat1[] <- as.numeric(mat1) -
@BondedDust,这行不通。
-
可以指定
stringsAsFactors = F,即mat2 <- sapply(as.data.frame(mat1, stringsAsFactors = F), as.numeric) -
嗯,让我很惊讶。这有效:
class(mat1) <- "numeric" -
不错@BondedDust。我也在想
mat2 <- as.numeric(mat1); dim(mat2) <- dim(mat1),但你的更好
标签: r type-conversion