【问题标题】:Error in dataframe while run in rnorm created dataframe in r在 rnorm 中运行时数据帧出错 在 r 中创建数据帧
【发布时间】:2021-09-12 10:31:12
【问题描述】:

我想计算 df1 中第一行与其余行之间的相关性(类:data.frame):

df1 <- data.frame(
  Ensembl_ID = c("ENSG00000000003", "ENSG00000000005", "ENSG00000000419", 
                 "ENSG00000000457", "ENSG00000000460", "ENSG00000000938", 
                 "ENSG00000000971", "ENSG00000001036", "ENSG00000001084", 
                 "ENSG00000001167" ), 
  `logFC 1` = c(-0.834165161710272, 1.02199443531549, 
                -0.558658947885705, -0.390114219973209, -1.23551839713296, 
                3.11429434221998, 0.283932163407262, -1.16908518620064, 
                -0.597054772455507, -0.593624543273255), 
  `logFC 2` = c(-1.18531035488942, 0.423719727339646, -1.23261719368372, 
                0.0855281133529292, -1.52366830232278, 3.36692586561211, 
                1.00323690950956, -0.000211248816114964, -4.74738483548391, 
                -0.318176231083024), 
  `logFC 3` = c(-0.262659255267546, 1.3962481061442, -0.548673555705647, 
                -0.0149651083306594, -1.45458689193089, 2.54126941463459, 
                1.17711308509307, -1.19425284921181, 1.17788731755683, 
                -0.367897054652365 ), 
  `logFC 4` = c(-0.840752912305256, 0.536548846040064, -0.277409459604357, 
                -0.241073614962264, -0.875313153342293, 1.61789645804321, 
                0.412287101096504, -1.11846661523232, -2.6274528854429, 
                -0.760452698231182), 
  `logFC 5` = c(-0.968784779247286, -0.502809694119192, -0.231526399163731, 
                -0.530038395734114, -0.706006018337411, 3.58264357077653, 
                -0.127521010699219, 0.270523387217103, 1.68335644352003, 
                -0.314902131571829), 
  `logFC 6` = c(-0.481754175843152, -0.440784040523259, -0.532975340622715, 
                -0.182089795101371, -0.564807490336052, 1.74119896504534, 
                -0.96169805631325, -0.721782763145306, -0.433459827401695, 
                -0.727495835245995 ), 
  `logFC 7` = c(-0.889343429110847, 1.07937149728343, -0.215144871523998, 
                -0.92234350748557, -0.832108253417702, 2.02456082994848, 
                -0.0434322861759954, -0.523126561938426, -0.556984056084809, 
                -0.740331742513503), 
  `logFC 8` = c(-0.858141567384178, 1.87728717064375, -0.381047638414538, 
                -0.613568289061259, -1.92838339196505, 2.23393705735665, 
                0.635389543483408, -0.466053620529111, -1.50483745357134, 
                -1.33400859143521), 
  `logFC 9` = c(-0.486388736112514, 0.789390852922639, -0.869434195504952, 
                -0.70405854858187, -1.16488184095428, 2.91497178849082, 
                -2.10331904053714, -0.571130459068143, -0.219526004620518, 
                -0.301435496557957)
)

相关计算代码(我需要转置数据,因为 cor 函数需要列矩阵为 x 和 y):

df2 <- cor(df1[1,],t(df1[2:10,]))

报错

Error in df1[2:10, ] : subscript out of bounds

但是,当我创建一个随机数据框并运行相同的代码时,它可以正常工作

# Creates a random matrix with 5 rows and 6 columns
mat=matrix(rnorm(30),5,6)
# Computes the correlation between the first row and the other 4 (cor function require transposed data)
cor(mat[1,],t(mat[2:5,]))

谁能帮助我?请。欢迎所有建议。提前致谢

【问题讨论】:

    标签: r dataframe tidyverse


    【解决方案1】:

    你可以改变几件事。

    1. cor 需要数字数据,所以删除第一列。
    2. 在示例中,mat[1,] 是一个数字向量,对于df1,我们可以使用unlist 得到它。
    cor(unlist(df1[1,-1]),t(df1[2:10,-1]))
    
    #         2      3      4      5      6      7      8     9   10
    #[1,] 0.136 0.0787 0.0839 0.0911 -0.341 -0.326 -0.591 0.578 0.11
    

    【讨论】:

    • 谢谢你,兄弟。你是一个了不起的人。我学得很慢,但你帮了我很多。谢谢你亲爱的。祝你有美好的一天:) 我会在 5 分钟后接受。
    【解决方案2】:

    使用tidyverse

    library(dplyr)
    df1 %>% 
       slice(1) %>% 
       select(where(is.numeric)) %>% 
       unlist %>%
        cor(data.table::transpose(df1 %>%
                   slice(-1), make.names = 1) %>%
                   as.matrix)
         ENSG00000000005 ENSG00000000419 ENSG00000000457 ENSG00000000460 ENSG00000000938 ENSG00000000971 ENSG00000001036 ENSG00000001084
    [1,]       0.1360999      0.07867911      0.08393437      0.09114973       -0.341149      -0.3262614      -0.5907573       0.5779449
         ENSG00000001167
    [1,]       0.1100449
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 2023-01-25
      相关资源
      最近更新 更多