【问题标题】:t function in R. It's not coming out the way it lookst 在 R 中起作用。它不像看起来那样出来
【发布时间】:2019-09-24 04:01:14
【问题描述】:

我对 R 中的 t 函数有疑问。

我使用tapply 函数来获取虹膜物种的隔膜长度。 但是为什么t函数的结果是这样的呢?

我猜如果我在“A”中使用 t 函数, 代码会这样显示

setosa        5.006
versicolor    5.936
virginica     6.588

【问题讨论】:

  • 你可以双转置t(t(A))或使用stack(A)

标签: r tapply


【解决方案1】:

A 只是一个向量,它是一维的,所以它不是真正的行或列。

为了将其与t() 进行转置,必须将其转换为二维矩阵。默认情况下,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

【讨论】:

    【解决方案2】:

    您的代码会生成一个带有每个元素名称的向量。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      相关资源
      最近更新 更多