如何轻松地将多维数组中的所有值强制转换为数字
How to easily coerce all values in a multidimensional array to numeric
所以我有一个 n X m X z 数组。它的所有值都可能是数字,但当前是字符(例如“4.02”)。有没有一种简单的方法可以在不经过大循环的情况下将所有值强制转换为数字?例如我可以写:
for(i in 1:n){
for(j in 1:m){
A[i, j, ] = as.numeric(A[i, j, ])
}
}
但这又慢又难看。有没有更好的办法?
笨蛋,有:
A = array(as.numeric(A), dim = dim(A), dimnames = dimnames(A))
嗯,R 中的数组只能容纳一种数据类型,因此它们要么全是数字,要么全是字符。另一种从字符更改为数字的简单方法是使用 class()<-
。例如
A <- array(c("4","5","6.2","7","8.8","9","10","11.5",
"12","12.2","13", "14.1"), dim=list(2,2,3))
str(A)
# chr [1:2, 1:2, 1:3] "4" "5" "6.2" "7" "8.8" "9" "10" ...
class(A) <- "numeric"
str(A)
# num [1:2, 1:2, 1:3] 4 5 6.2 7 8.8 9 10 11.5 12 12.2 ...
A
所以我有一个 n X m X z 数组。它的所有值都可能是数字,但当前是字符(例如“4.02”)。有没有一种简单的方法可以在不经过大循环的情况下将所有值强制转换为数字?例如我可以写:
for(i in 1:n){
for(j in 1:m){
A[i, j, ] = as.numeric(A[i, j, ])
}
}
但这又慢又难看。有没有更好的办法?
笨蛋,有:
A = array(as.numeric(A), dim = dim(A), dimnames = dimnames(A))
嗯,R 中的数组只能容纳一种数据类型,因此它们要么全是数字,要么全是字符。另一种从字符更改为数字的简单方法是使用 class()<-
。例如
A <- array(c("4","5","6.2","7","8.8","9","10","11.5",
"12","12.2","13", "14.1"), dim=list(2,2,3))
str(A)
# chr [1:2, 1:2, 1:3] "4" "5" "6.2" "7" "8.8" "9" "10" ...
class(A) <- "numeric"
str(A)
# num [1:2, 1:2, 1:3] 4 5 6.2 7 8.8 9 10 11.5 12 12.2 ...
A