簡體   English   中英

為什么我在 colMeans(x, na.rm = TRUE) 中出現錯誤:'x' 必須是數字

[英]Why am I getting Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric

我的代碼如下:

my_filtered_data <- my_data[, colSums(my_data != 0) >= 300]

set.seed(123)
data1.csv <- my_filtered_data[sample(nrow(my_filtered_data), 200), ]
data2.csv <- data.frame(data1.csv)
data3.csv <- scale(data2.csv, center = TRUE) # Gives error.

colMeans(x, na.rm = TRUE) 中的錯誤:“x”必須是數字

有人可以解釋為什么我收到此錯誤嗎?

這對於評論來說有點長,可能會也可能不會回答問題。 但我認為這可能是 OP 數據集的問題之一。

您使用了 data.frame 命令,現在 data.frame 默認包含一個參數stringsAsFactors = TRUE ,可能這是將您的一列轉換為因子,這就是您收到此錯誤的原因,避免它使用options(stringsAsFactors=FALSE)一種方法options(stringsAsFactors=FALSE)在您的代碼之上或使用data.frame(your_object, stringsAsFactors=FALSE)

只是為了重新創建錯誤,您可以使用 iris 數據集來顯示類似的錯誤,

scale(iris[,1:5], center=TRUE, scale=TRUE) 
## This fails with the same error as the last column in iris data set is a factor

但這會奏效,

scale(iris[,1:4], center=TRUE, scale=TRUE)

請注意,我將列放在此處,在您的情況下,您可能希望將其更改為數字(因此這完全取決於您在此處嘗試執行的操作)。 如果您確實想將其從因子更改為數字,請嘗試運行as.numeric(as.character(your_column))

同樣如評論中所建議的那樣,嘗試避免在 R 中的對象中使用包含點的名稱。

因此,所有信息的總和可以包含在一行中,您應該嘗試以下操作:

data.frame(data1.csv, stringsAsFactors=FALSE)然后嘗試運行scale命令。

暫無
暫無

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

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