我有以下問題:轉換4D數字陣列分類
我有一個四維陣列,比方說,例如
a <- array(seq(1,2*3*4*2), c(2,3,4,2))
a[1,2,3,2] <- NaN
我需要用一定的數組轉換爲分類數據閾。作爲一個例子,它可能類似於a[ a > 10 ] <- "1"
和a[ a <= 10 ] <- "0"
。
現在的問題是,NaN值也轉換爲「0」。
我該怎麼做?
我有以下問題:轉換4D數字陣列分類
我有一個四維陣列,比方說,例如
a <- array(seq(1,2*3*4*2), c(2,3,4,2))
a[1,2,3,2] <- NaN
我需要用一定的數組轉換爲分類數據閾。作爲一個例子,它可能類似於a[ a > 10 ] <- "1"
和a[ a <= 10 ] <- "0"
。
現在的問題是,NaN值也轉換爲「0」。
我該怎麼做?
這裏的交易...你的第一個操作的轉換是NaN
爲「南」,這是不是一個NaN
。自從您將其更改爲字符向量後,該陣列下面的原子向量無法保存真實的NaN
。
, , 3, 2
[,1] [,2] [,3]
[1,] "1" "NaN" "1"
[2,] "1" "1" "1"
第二個比較和分配轉換爲
, , 3, 2
[,1] [,2] [,3]
[1,] "0" "NaN" "0"
[2,] "0" "0" "0"
所以我有點困惑你的要求,它得到轉換爲「0」。您可能仍然疑惑什麼其他價值得到了轉換成零,但通過這種操作說明:
> "1" <= 10
[1] TRUE
這也提供了什麼,我想你想:
a[] <- ifelse(is.na(a), "NaN",
ifelse(a >10 , "1", "0"))
#Check
table(a, useNA="always")
#----
a
0 1 NaN <NA>
10 37 1 0
如果您正在準備與整數1
和0
,而不是字符"1"
和"0"
工作,那麼所有你需要做的是
a[] <- as.numeric(a>10)
[]
確保保留a
的結構 - 否則它將成爲矢量。 as.numeric
只是將邏輯TRUE/FALSE
轉換爲1/0
。 NaN
變成NA
。
你再拿到
a
, , 1, 1
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 0 0
, , 2, 1
[,1] [,2] [,3]
[1,] 0 0 1
[2,] 0 0 1
, , 3, 1
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
, , 4, 1
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
, , 1, 2
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
, , 2, 2
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
, , 3, 2
[,1] [,2] [,3]
[1,] 1 NA 1
[2,] 1 1 1
, , 4, 2
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
難道你的意思是'一個[A> 10 is.nan(一)!< - 1; a [a <= 10&!is.nan(a)] < - 0' – akrun
@akrun但是數據並不是絕對的。只要我'a [a> 10&!is.nan(a)] < - 「1」'所有的NaN值都被轉換爲「1」或「0」。 – D1X
或者只是'a [] < - as.numeric(a> 10)'會做到這一點('NaN'轉換爲'NA') –