按R中的特定行名称逐行提取所有列值

时间:2015-10-04 13:24:59

标签: r matrix

假设我有这个矩阵M:

    using (System.IO.StreamReader sr = new System.IO.StreamReader(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) + "\\sample.txt"))
        {
            while (sr.EndOfStream == false)
            {
                string line = sr.ReadLine();
                string[] columns = line.Split('|');

                try
                {
                    //0 1 2     3                                4              5          6          7       8          9          10                11       12       13
                    // | |500  |RUBBISH_DEFAULT_COLOR_A         |BOB           |24.09.2010|31.12.9999|       |24.09.2010|10:19:42  |               0 |        |        |
                    columns[5] = System.Convert.ToDateTime(columns[5]).ToString("yyyy.MM.dd");
                    columns[6] = System.Convert.ToDateTime(columns[6]).ToString("yyyy.MM.dd");
                    columns[8] = System.Convert.ToDateTime(columns[8]).ToString("yyyy.MM.dd");
                    columns[9] = System.Convert.ToDateTime(columns[9]).ToString("yyyy.MM.dd");
                    //any changes can be done to string array before submitting to DB
                }
                catch (FormatException ex)
                {
                    // Do something in case of incoorect format.
                    MessageBox.Show(ex.Message);
                }
                MessageBox.Show(string.Format("columns[5]:{0}, columns[6]:{1}", columns[5], columns[6]));
            }

        }

现在,如果我想通过rowname提取所有列值" B00813GRG4"我该怎么办。我试过了 V1 B001E4KFG0 A3SGXH7AUHU8GW B00813GRG4 A1D87F6ZCVE5NK B00813GRG4 ABXLMWJIXXAIN ,但它只给了我" A1D87F6ZCVE5NK"而不是两个" A1D87F6ZCVE5NK"和" ABXLMWJIXXAIN"

1 个答案:

答案 0 :(得分:3)

我们可以使用==返回逻辑向量,然后可以使用它来对行进行子集化。

M[rownames(M)=='B00813GRG4',, drop=FALSE]
#            V1              
# B00813GRG4 "A1D87F6ZCVE5NK"
# B00813GRG4 "ABXLMWJIXXAIN" 

使用'B00813GRG4'作为行索引将仅返回与使用match类似的第一个匹配元素。

 M[match('B00813GRG4', rownames(M)),, drop=FALSE]
 #           V1              
 #B00813GRG4 "A1D87F6ZCVE5NK"