У меня есть проблема с помощью данных из разграниченного файла данных вкладки, импортированного с read.delim
.
Большинство столбцов содержит числовые данные, которые я должен сделать a t.test
для. К сожалению, я всегда получаю эту ошибку:
Error in if (stderr < 10 * .Machine$double.eps * max(abs(mx), abs(my)))
stop("data are essentiallyconstant") :
missing value where TRUE/FALSE needed
In addition: Warning messages:
1: In mean.default(x) : argument is not numeric or logical: returning NA
2: In mean.default(y) : argument is not numeric or logical: returning NA
Я заметил, что это только происходит с векторами, которые состоят из разных уровней. Это даже не выполнит простые числовые операции как вектор [1] + вектор [2] для выровненных векторов. Векторы без уровней хорошо работают, все же.
Как я могу использовать данные в выровненных векторах для вычисления?
Спасибо
Мне удалось воспроизвести ваше сообщение об ошибке в следующем небольшом примере:
x = as.factor(1:5)
y = as.factor(1:5)
t.test(x, y)
yields
Error in if (stderr < 10 * .Machine$double.eps * max(abs(mx), abs(my))) stop("data are essentially constant") :
missing value where TRUE/FALSE needed
In addition: Warning messages:
1: In mean.default(x) : argument is not numeric or logical: returning NA
2: In mean.default(y) : argument is not numeric or logical: returning NA
Проблема в том, что вы пытаетесь выполнить t-тест на non-числовые векторы. Сложение также не определено для факторов:
x + y
yields
[1] NA NA NA NA NA
Warning message:
In Ops.factor(x, y) : + not meaningful for factors
Предупреждение дает четкое представление о том, что не так, а также объясняет, почему ваш t-тест не работает.
Чтобы устранить проблему, вам нужно сделать так, как предлагает ilya: преобразовать ваши векторы в числовые с помощью as.numeric(as.character())
Возможно, некоторые из ваших данных могут быть не в числовом формате после их загрузки. Проверьте структуру данных с помощью str (your.data)
. Если ваши желаемые переменные не являются числовыми, вы можете преобразовать их с помощью data $ var1 <- as.числовой (данные $ var1)
.