假设我有这个矩阵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"
答案 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"