Т функция в R. Это не выходит так, как это выглядит - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть вопрос по поводу функции t в R.

Я использовал функцию tapply, чтобы получить длину перегородки видов радужки.Но почему функция t имеет такой же результат, как этот?

enter image description here

Я догадался, что если я использую функцию t в «A»,будет показывать, как это

setosa        5.006
versicolor    5.936
virginica     6.588

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Ваш код создает вектор с именами для каждого элемента.

A <- (tapply(iris$Sepal.Length, iris$Species, mean))
str(A)
# num [1:3(1d)] 5.01 5.94 6.59
# - attr(*, "dimnames")=List of 1
#  ..$ : chr [1:3] "setosa" "versicolor" "virginica"

Если вы поместите свой вектор в двумерную форму, такую ​​как кадр данных или матрица, он будет показан вертикально.Транспонирование преобразует его в горизонтальный, как ваш пример.

data.frame(A)
               A
setosa     5.006
versicolor 5.936
virginica  6.588


data.frame(t(A))
  setosa versicolor virginica
1  5.006      5.936     6.588
0 голосов
/ 24 сентября 2019

A - это просто вектор, который является одномерным, поэтому на самом деле это не строка или столбец.

Чтобы транспонировать его с помощью t(), его необходимо преобразовать вматрица, которая является 2-мерной.По умолчанию R обрабатывает векторы как столбцы при преобразовании в матрицу.Итак, as.matrix() дает столбец, а транспонирование - строку.Например:

> x = c(1, 2, 3)
> as.matrix(x)
     [,1]
[1,]    1
[2,]    2
[3,]    3
> t(x)
     [,1] [,2] [,3]
[1,]    1    2    3
...