将新行条目追加到R中的前一行
我是R新手,我有如下用制表符分隔的文件将新行条目追加到R中的前一行,r,R,我是R新手,我有如下用制表符分隔的文件 A1 HI_0004674; HI_0005524; HI_0016055; HI_0004672; HI_0004674; HI_0005524; HI_0005634; HI_0005730; HI_0005737; HI_0005829; HI_0005956; HI_0006468; HI_0007067; HI_0007228; HI_0007310; HI_0007411; HI_0007623; HI_0009267; HI
A1 HI_0004674; HI_0005524; HI_0016055; HI_0004672; HI_0004674; HI_0005524; HI_0005634; HI_0005730; HI_0005737; HI_0005829; HI_0005956; HI_0006468; HI_0007067; HI_0007228; HI_0007310; HI_0007411; HI_0007623; HI_0009267; HI_0016055; HI_0022416; HI_0030177; HI_0031397; HI_0031647; HI_0045475; HI_0045880; HI_0046331; HI_0048749; HI_0060810; HI_0001558; HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0019888; HI_0030177; HI_0030307; HI_0042127; HI_0043154; HI_0045732; HI_0046777; HI_0048511; HI_0071174;
HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0048511; HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0005654; HI_0005829; HI_0005886; HI_0006351; HI_0006355; HI_0006457; HI_0006468; HI_0006915; HI_0007165; HI_0008284; HI_0016055; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0051879; HI_0061077; HI_0071174; HI_1901796;
HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008013; HI_0008284; HI_0016055; HI_0016301; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0031519; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0006468; HI_0008284; HI_0019888; HI_0030307; HI_0045732; HI_0046777
A2 HI_0004674; HI_0005524; HI_0016055; HI_0004672; HI_0004674; HI_0005524; HI_0005634; HI_0005730; HI_0005737; HI_0005829; HI_0005956; HI_0006468; HI_0007067; HI_0007228; HI_0007310; HI_0007411; HI_0007623; HI_0009267; HI_0016055; HI_0022416; HI_0030177; HI_0031397; HI_0031647; HI_0045475; HI_0045880; HI_0046331; HI_0048749; HI_0060810; HI_0001558; HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0019888; HI_0030177; HI_0030307; HI_0042127; HI_0043154; HI_0045732; HI_0046777; HI_0048511; HI_0071174;
HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0048511; HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0005654; HI_0005829; HI_0005886; HI_0006351; HI_0006355; HI_0006457; HI_0006468; HI_0006915; HI_0007165; HI_0008284; HI_0016055; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0051879; HI_0061077; HI_0071174; HI_1901796;
HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008013; HI_0008284; HI_0016055; HI_0016301; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0031519; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0006468; HI_0008284; HI_0019888; HI_0030307; HI_0045732; HI_0046777
我希望重新安排数据框,以便在每个ID之前添加新行条目,如下所示:
提前感谢。请指导我我们可以使用
读取行
读取数据,使用grep
和cumsum
创建分组变量,然后粘贴
使用tapply
然后使用read.table
grp <- cumsum(!grepl("^(\\S+;|\\S+)$", lines[-1]))
read.table(text=c(lines[1], tapply(lines[-1], grp, FUN = paste,
collapse="")), header=TRUE, stringsAsFactors=FALSE)
# Id Values
#1 A1 Aj1;B3;C4;B23;C56;N23;G34;L78;Z65
#2 B2 Md1;K45;OK1;Nf3;P56;L76;A98
#3 C3 Q23;W12;Z56;K9v;j56;d34;H65
grp我们可以用readLines
读取数据,用grep
和cumsum
创建一个分组变量,然后粘贴这些“行”使用tapply
,然后用read.table
grp <- cumsum(!grepl("^(\\S+;|\\S+)$", lines[-1]))
read.table(text=c(lines[1], tapply(lines[-1], grp, FUN = paste,
collapse="")), header=TRUE, stringsAsFactors=FALSE)
# Id Values
#1 A1 Aj1;B3;C4;B23;C56;N23;G34;L78;Z65
#2 B2 Md1;K45;OK1;Nf3;P56;L76;A98
#3 C3 Q23;W12;Z56;K9v;j56;d34;H65
grp感谢您的指导。我试过了,但它告诉我“read.table(text=c(第[1]行)、tapply(第[-1]行)、grp、FUN=paste、:列多于列名中出现错误”@Chudar根据您显示的数据,我没有收到错误我已经用原始数据编辑了我的问题。有了这些数据,您的代码将我抛出错误”read.table(text=c(第[1]行)、tapply(第[-1],grp,FUN=paste,:比列名更多的列。很抱歉给您带来不便。请指导我。我对R@Chudar我更新了帖子。你的新数据集没有显示任何标题,模式也不一样。谢谢你的指导。我尝试过,但它给了我eror,说“read.table(text=c(第[1]行),tapply(第[-1]行),grp,FUN=paste,:列数多于列名“@Chudar根据您显示的数据,我没有收到错误。我已使用原始数据编辑了我的问题。使用此数据,您的代码会向我抛出错误“read.table中的错误”(text=c(第[1]行),tapply(第[-1]行),grp,FUN=paste,:列数多于列名”.很抱歉给您带来不便。请指导我。我对R@Chudar我更新了帖子。你的新数据集没有显示任何标题,模式也不同。
lines <- trimws(readLines("yourfile.txt"))
lines <- trimws(readLines(textConnection("Id Values
A1 Aj1;B3;C4;
B23;C56;N23;G34;
L78;Z65
B2 Md1;K45;OK1;
Nf3;P56;L76;
A98
C3 Q23;W12;Z56;
K9v;j56;d34;
H65")))