說我生成,像這樣一些數據:分配到data.frame導致中的R
dat <- data.frame(x = rnorm(100), y = rnorm(100), z = rnorm(100))
dat[sample(nrow(dat), 5), 3] <- NaN
dat[sample(nrow(dat), 5), 3] <- Inf
現在,一些z值是Inf
或NaN
。
從
cut(dat$z[is.finite(dat$z)],6)[1:10]
結果的前10行是
[1] (0.286,1.17] (0.286,1.17] (0.286,1.17] (0.286,1.17] (0.286,1.17]
[6] (0.286,1.17] (-1.48,-0.599] (-1.48,-0.599] (-0.599,0.286] (0.286,1.17]
6 Levels: (-2.37,-1.48] (-1.48,-0.599] (-0.599,0.286] ... (2.06,2.94]
但如果我嘗試做如下分配
dat$col[is.finite(dat$z)] <- cut(dat$z[is.finite(dat$z)],6)
我得到的整數,而不是標籤:
> dat$col[1:10]
[1] 4 4 4 4 4 4 2 2 NA 3
如何正確地將因子標籤分配給行子集?
謝謝! 烏里
這很正常。您有一個數字列,其中您可以使用切割結果更改某些值。因爲這是一個因素(本質上它是一個帶有標籤的數字),所以只需粘貼數字值而不是標籤。所以R沒有做一個不需要的類型改變。你期望R拒絕的類型改變,那就是你的問題。 ;) –