使矩阵数字和名称顺序

2024-01-03

我有以下数据:

yvar <- c(1:150)
replication <- c( rep(c(rep(1, 10), rep(2,10), rep(3,10)),5))
genotypes <- c(rep(paste("G", 1:10, sep= ""), 15))
environments <- c(rep(paste("E",5:1, sep = ""), each = 30))
mydf1 <- data.frame (yvar, replication, genotypes, environments)
mydf1$replication <- as.factor(mydf1$replication)

我想总结一下数据:

mydf = data.frame(aggregate (yvar ~ genotypes + environments, data = mydf1, mean))

现在创建一个矩阵,希望是数字矩阵,matm 不是!

matm = as.matrix(aggregate(yvar ~ genotypes, mydf, 'c'))
colnames(matm) <- c("genotypes", levels(mydf$environments))
      genotypes E1    E2    E3    E4    E5   
 [1,] "G1"      "131" "101" " 71" " 41" " 11"
 [2,] "G10"     "140" "110" " 80" " 50" " 20"
 [3,] "G2"      "132" "102" " 72" " 42" " 12"
 [4,] "G3"      "133" "103" " 73" " 43" " 13"
 [5,] "G4"      "134" "104" " 74" " 44" " 14"
 [6,] "G5"      "135" "105" " 75" " 45" " 15"
 [7,] "G6"      "136" "106" " 76" " 46" " 16"
 [8,] "G7"      "137" "107" " 77" " 47" " 17"
 [9,] "G8"      "138" "108" " 78" " 48" " 18"
[10,] "G9"      "139" "109" " 79" " 49" " 19" 

我转换为data.frame,然后

    matd <- data.frame(matm)

  genotypes       E1       E2       E3       E4       E5
1         G1 31.70000 26.76667 23.60000 30.73333 43.13333
2        G10 32.40000 17.86667 28.83333 32.43333 30.23333
3         G2 29.50000 24.60000 24.16667 33.43333 38.66667
4         G3 27.00000 28.83333 33.63333 43.83333 29.60000
5         G4 29.53333 29.90000 26.60000 26.13333 40.33333
6         G5 27.40000 32.43333 27.96667 40.43333 41.46667
7         G6 36.76667 32.26667 28.26667 38.73333 33.43333
8         G7 29.63333 27.00000 26.96667 34.90000 40.70000
9         G8 24.50000 23.26667 22.50000 27.60000 32.26667
10        G9 31.60000 24.96667 24.46667 27.56667 36.26667

我想去掉基因型列,然后将其转换为矩阵

matx = data.frame(matd[,-1])
matdm <- as.matrix(matx) 
matdm 
      E1         E2         E3         E4         E5        
 [1,] "31.70000" "26.76667" "23.60000" "30.73333" "43.13333"
 [2,] "32.40000" "17.86667" "28.83333" "32.43333" "30.23333"
 [3,] "29.50000" "24.60000" "24.16667" "33.43333" "38.66667"
 [4,] "27.00000" "28.83333" "33.63333" "43.83333" "29.60000"
 [5,] "29.53333" "29.90000" "26.60000" "26.13333" "40.33333"
 [6,] "27.40000" "32.43333" "27.96667" "40.43333" "41.46667"
 [7,] "36.76667" "32.26667" "28.26667" "38.73333" "33.43333"
 [8,] "29.63333" "27.00000" "26.96667" "34.90000" "40.70000"
 [9,] "24.50000" "23.26667" "22.50000" "27.60000" "32.26667"
[10,] "31.60000" "24.96667" "24.46667" "27.56667" "36.26667"

我有两个问题:

(1) 是否有一致的方法来制作/分配矩阵数字

(2) 我可以看到基因型列名称按字母顺序排序。我的文件在列中的顺序不同。如果这是一致的,我对这个顺序很好,但是我担心以下部分:

colnames(matm) <- c("genotypes", levels(mydf$environments))

如果聚合函数的阶数不同并且levels(mydf$environments),它们都是按字母顺序排序还是按文件顺序排序。

感谢您的建议。


I think我明白混乱从何而来。稍微备份一下,当你进行聚合时你想要变成一个矩阵;尝试捕获并查看它:

myAgg <- aggregate(yvar ~ genotypes, mydf, 'c')
str(myAgg)

yields:

> str(myAgg)
'data.frame':   10 obs. of  2 variables:
 $ genotypes: Factor w/ 10 levels "G1","G10","G2",..: 1 2 3 4 5 6 7 8 9 10
 $ yvar     : num [1:10, 1:5] 131 140 132 133 134 135 136 137 138 139 ...

因此聚合产生了一个有点不典型的数据框架。专栏yvar实际上是您感兴趣的矩阵:

> myAgg$yvar
      [,1] [,2] [,3] [,4] [,5]
 [1,]  131  101   71   41   11
 [2,]  140  110   80   50   20
 [3,]  132  102   72   42   12
 [4,]  133  103   73   43   13
 [5,]  134  104   74   44   14
 [6,]  135  105   75   45   15
 [7,]  136  106   76   46   16
 [8,]  137  107   77   47   17
 [9,]  138  108   78   48   18
[10,]  139  109   79   49   19

所以你可以直接抓住它:

matdm <- myAgg$yvar

现在回答您的具体问题...

1)使矩阵数字化的一致方法是确保数据进入matrix() or as.matrix()函数是数字的。当你打电话时

matm = as.matrix(aggregate(yvar ~ genotypes, mydf, 'c'))

您创建了一个字符矩阵,因为您有一个 char 列。然后将该矩阵转换为数据框。这将列转换为因子。然后你选择了几列,毫不奇怪,它们仍然是因子。所以当你打电话时

matdm <- as.matrix(matx)

因素被转换为字符。

2)创建的变量的顺序

aggregate(yvar ~ genotypes, mydf, 'c')

是变量中因素顺序的函数genotypes。这些通常是按字母顺序创建的,但您可以随时查看级别以完全确定。如果因素是手动创建的,则它们不一定按字母顺序排列。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使矩阵数字和名称顺序 的相关文章

  • r - 根据第一个向量重新排序第二个向量

    寻找解决方案来执行以下操作 有两个向量 a lt c 2 1 3 4 7 6 5 9 8 10 b lt c 3 2 1 6 5 4 7 8 9 10 我想创建第三个向量 它给出向量的顺序b需要重新排序 使其顺序与a 在这种情况下我想得到
  • 需要根据数据框中的行号应用不同的公式

    我正在努力在数据框中找到某种移动平均值 该公式将根据正在计算的行数而变化 实际场景是我需要计算Z列 Edit 2 以下是我正在使用的实际数据 Date Open High Low Close 0 01 01 2018 1763 95 176
  • 使用shinyjs通过javascript在闪亮的应用程序中操作现有的Leaflet地图

    我有一个闪亮的应用程序 其中包含现有的传单地图 我希望能够在渲染后使用自定义 javascript 通过shinyjs包裹 一个最小的例子如下 app R packages library dplyr library leaflet lib
  • magrittr 管道中的 WOE

    如何将下面的证据代码权重放入 magrittr 管道中 df gt 我尝试过的一切似乎都不起作用 df library Information library magrittr df a c aa bb cc aa aa aa bb cc
  • 将公式传递给 R 中的函数?

    对此的任何帮助将不胜感激 我正在使用 Lumley 调查包 并试图简化我的代码 但遇到了一些小障碍 在我的代码中调用包中的 svymean 函数如下 其中第一个参数是指示我想要哪些变量的公式 第二个参数是该数据集 svymean hq eh
  • 有什么方法可以访问 makeActiveBinding 安装的函数吗?

    标题基本上说明了一切 如果我这样做 makeActiveBinding x function runif 2 GlobalEnv x 1 0 7332872 0 4707796 x 1 0 5500310 0 5013099 那我有什么办法
  • 在 R 中查找 Windows 用户名

    有没有办法在 R 会话中获取当前的 Windows 用户名或 Windows 主目录 Thanks 抱歉 如果我错过了什么 但我找不到任何东西 你可以做 Sys getenv USERNAME Sys getenv HOME 如果你只是输入
  • 挖泥机子集 (MuMIn) - 如果存在主效应,则必须包括交互作用

    我正在使用 dredge MuMIn 进行一些探索性工作 在此过程中 我想将两个变量设置为仅当它们之间存在相互作用时才允许一起出现 即它们不能仅作为主要效果一起出现 使用样本数据 我想挖掘模型 fm1 尽管它可能没有意义 如果变量 GNP
  • 如何为 nls 函数找到良好的起始值?

    我不明白为什么我不能对这些数据使用 nls 函数 我尝试过很多不同的起始值 但总是出现相同的错误 这是我一直在做的事情 expFct2 function x a b c a 1 exp x b c vec x lt c 77 87 87 7
  • 列表列表中出现的频率

    我有一个列表列表 其中每个列表都已排序 我想调查的是某个元素在特定位置出现了多少次 例如 pnc 曾两次出现在第二位 一次出现在第三位 我的数据结构如下 dput degree l list c schwab 0 pnc 0 0344827
  • 在 C++ 中转置矩阵

    我正在编写一个程序来使用分配的内存转置给定的矩阵 该函数对于方阵 NxN rows cols 可以完美工作 但对于 MxN 矩阵 rows cols 则崩溃 请帮忙 void transpose int matrix int row int
  • 为什么我收到保存错误、软盘错误的消息?

    我最近更新了 R 和 R studio 当我尝试保存文件时 收到一条错误消息 保存 文件名 时出错 驱动器中的软盘错误 将 2 卷序列号 3 插入驱动器 1 这是第一次看到这个错误信息 不知道该怎么办 我也无法 另存为 感谢您的帮助 尝试使
  • 将 dplyr 中的starts_with与部分列名称的向量一起使用

    我想使用 dplyr 选择与字符串向量匹配的某些列 one lt seq 1 10 two lt rnorm 10 three lt runif 10 1 2 four lt 10 1 df lt data frame one two th
  • R 中自定义函数的等高线图

    我正在使用一些自定义函数 我需要根据参数的多个值为它们绘制轮廓 这是一个示例函数 我需要画这样的等高线图 任何想法 Thanks 首先你构造一个函数 fourvar它将这四个参数作为参数 在这种情况下 您可以使用 3 个变量来完成此操作 其
  • 计算带状矩阵的 colCumsums 的更快替代方案

    我是 R 和 stats 的新手 在我当前工作的领域中 我需要以独特的方式计算累积列总和 最初提供宽度为 b 行数为 n 的方带矩阵 例如 n 8 且 b 3 0 1 2 7 0 0 0 0 0 0 3 6 7 0 0 0 0 0 0 3
  • R 中带有变音符号的字符列表

    我试图将字符串中的电话 字符 出现次数制成表格 但变音符号单独作为字符制成表格 理想情况下 我有一个国际音标的单词列表 其中包含大量变音符号以及它们与基本字符的几种组合 我在这里给出了仅包含一个单词的 MWE 但对于单词列表和更多类型的组合
  • 删除ggplot2 geom_bar中没有数据的日期列[重复]

    这个问题在这里已经有答案了 我想隐藏 ggplot2 中没有数据的列 这是使用 nycflights13 库的可重现示例 library nycflights13 library dplyr library ggplot2 small da
  • 对 pandas 数据框中的每一列应用函数

    我如何以更多的熊猫方式编写以下函数 def calculate df columns mean self df means for column in df columns columns tolist cleaned data self
  • 如何在 Pandas 数据框中用 NaN 替换一系列值?

    我有一个巨大的数据框 我应该如何用 NaN 替换一系列值 200 100 数据框 您可以使用pd DataFrame mask https pandas pydata org pandas docs stable generated pan
  • 将从数据透视表包生成的数据透视表转换为数据帧

    我正在尝试制作一个数据透视表pivottabler包裹 我想将数据透视表对象转换为数据框 以便我可以将其转换为数据表 带有 DT 并在 Shiny 应用程序中渲染它 以便可以下载 library pivottabler pt qpvt mt

随机推荐