簡體   English   中英

x[[jj]][iseq] <- vjj 中的錯誤:R 中的替換長度為零(KlaR 包)

[英]Error in x[[jj]][iseq] <- vjj : replacement has length zero in R (KlaR package)

我有一個包含 188 列和 100 行(加上標題行)的數據集。 我正在嘗試將 R 中的kmodes聚類方法(來自klaR包)應用於該矩陣。

數組數據結構中有兩種類型的數據:字符串和二進制。 兩者都有空值。

例如:

 Q27_history     Q28
      1          <NA> 
    <NA>    yes, sometimes

計算總的簇內平方和的函數:

set.seed (96743)

# function to compute total within-cluster sum of square 
wss <- function(k) {
  sum((kmodes( whois_data, k)$withindiff))
}

# Compute and plot wss for k = 1 to k = 15
k.values <- 2:15

# extract wss for 2-15 clusters
wss_values <- map_dbl(k.values, wss)

print(wss_values)

錯誤文本:

Error in x[[jj]][iseq] <- vjj : replacement has length zero

擔心的是:

Error in print(wss_values) :object 'wss_values' is not found

我試圖將kmodes(na.fill(data, fill=""), k)放入:

wss <- function(k) {
  sum((kmodes( whois_data, k)$withindiff))
  kmodes(na.fill(data, fill=""), k)
}

但是在那之后library(purrr)停止工作並且找不到變量map_dbl

我應該如何用空數據內聯行?

我認為在使用 kmode 時不能有 NA,它應該拋出一個錯誤:

set.seed(111)
whois_data = data.frame(Q1 = rbinom(100,1,0.5),
Q2 = sample(c("Y","N"),100,replace=TRUE),
Q3 = sample(c(NA,1:3),100,replace=TRUE))

kmodes(whois_data,3)

Error in old.cluster != cluster : 
  comparison of these types is not implemented

在沒有 NA 的情況下進行 kmodes 更有意義:

wss <- function(k,df) {
  sum((kmodes(df, k)$withindiff))
}

library(purrr)

map_dbl(2:5, wss,df = whois_data[complete.cases(whois_data),])
[1] 91 58 70 42

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM