prcomp "Ошибка в colMeans (x, na.rm = TRUE): 'x' должно быть числовым" - PullRequest
0 голосов
/ 17 мая 2019

Я новичок в R и сейчас пытаюсь создать сюжет PCA для проекта. Я создал таблицы своих данных в Excel, а затем сохранил их как файл .csv, который я объявил как переменную следующим образом:

> har.lip <-read.csv("HData.csv", header=TRUE, sep=",")
> head(har.lip[, 1:3])
      NAME   NUM1     NUM80
1  IN-3  4.347214  8.247082
2  IN-4  3.666815  8.108210
3  IN-5  5.779208 12.329948
4  IN-7  6.205594 22.449827
5  IN-7  5.342581 10.762976
6  IN-3  4.538335  9.711204
> pca <- prcomp(har.lip)
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric

Я пытался адаптировать другие решения здесь к своим, и, похоже, это не работает. Я следовал за учебником, но я мог бы использовать некоторую дополнительную помощь. Спасибо!

1 Ответ

0 голосов
/ 17 мая 2019

Исходя из вашего фрейма данных, похоже, что первый столбец является строкой.prcomp не переносит строки.Что-то, что вы могли бы сделать:

har.lip <-read.csv("HData.csv", header=TRUE, sep=",")

# Coerce to matrix, remove the first column which has characters
har.lip_mat <- as.matrix(har.lip[ ,-1])

# run function on the matrix
pca <- prcomp(har.lip_mat)

Это должно дать вам желаемый результат.

Чтобы проиллюстрировать некоторые из ваших дополнительных вопросов, вот более расширенное представление:

library(dplyr)

# Make a data set that looks like yours
sim_data <- mtcars %>% 
    tibble::rownames_to_column(var = "id")

# Make your data set a matrix and remove non-numeric columns
sim_data_mat <- as.matrix(sim_data[ ,-1])

# Add row names to your matrix from original data ste
rownames(sim_data_mat) <- sim_data[ ,1]

# Keep complete cases only

sim_data_mat <- sim_data_mat[complete.cases(sim_data_mat),]

# Now run your 
prcomp(sim_data_mat)
``
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...