是否有相当于unix“comm”的东西? R 中的命令?

发布于 2024-10-21 12:41:03 字数 204 浏览 1 评论 0原文

我有一个包含唯一 ID 列表的主文件,并且希望将三个文件与 ID 子集与此一起对齐,最终得到: 第 1 列(id1、id2、id3、id4 等) 第 2 列(空格、id2、空格、空格) 第 3 列(id1、id2、空格 space) 第 4 列(id1、空格 id3 空格)等。 我在 R 中有一个唯一的列表,并且 unix 中的“comm”命令似乎可以执行此操作 - R 中是否有等效的命令?

I have one master file with a list of unique IDs and want to align three files with subsets of IDs alongside this, ending up with:
Column 1 (id1, id2, id3, id4 etc) Column 2 (space, id2, space, space) Column 3 (id1, id2, space space) Column 4 (id1, space id3 space) etc.
I have a unique list in R and the "comm" command in unix seems to do this - is there an equivalent in R?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

抹茶夏天i‖ 2024-10-28 12:41:03

数据的结构不是很清楚,但是如果您从以下向量开始:

R> master <- paste("id",1:10,sep="")
R> sub1 <- paste("id",c(2,3,5),sep="")
R> sub2 <- paste("id",c(1,4,8,9),sep="")
R> master
[1] "id1"  "id2"  "id3"  "id4"  "id5"  "id6"  "id7"  "id8"  "id9"  "id10"
R> sub1
[1] "id2" "id3" "id5"
R> sub2
[1] "id1" "id4" "id8" "id9"

您可以从您的 id 列表创建一个数据框,并使用这些 id 作为行名称:

R> df <- data.frame(master=master, row.names=master)
R> df
     master
id1     id1
id2     id2
id3     id3
id4     id4
id5     id5
id6     id6
id7     id7
id8     id8
id9     id9
id10   id10

然后您可以按以下方式为每个子集添加新列:

R> df[sub1, "sub1"] <- sub1
R> df[sub2, "sub2"] <- sub2

结果如下:

R> df
     master sub1 sub2
id1     id1 <NA>  id1
id2     id2  id2 <NA>
id3     id3  id3 <NA>
id4     id4 <NA>  id4
id5     id5  id5 <NA>
id6     id6 <NA> <NA>
id7     id7 <NA> <NA>
id8     id8 <NA>  id8
id9     id9 <NA>  id9
id10   id10 <NA> <NA>

The structure of your data is not very clear, but if you start with the following vectors :

R> master <- paste("id",1:10,sep="")
R> sub1 <- paste("id",c(2,3,5),sep="")
R> sub2 <- paste("id",c(1,4,8,9),sep="")
R> master
[1] "id1"  "id2"  "id3"  "id4"  "id5"  "id6"  "id7"  "id8"  "id9"  "id10"
R> sub1
[1] "id2" "id3" "id5"
R> sub2
[1] "id1" "id4" "id8" "id9"

You can create a data frame from your master list of ids, and use these ids as row names :

R> df <- data.frame(master=master, row.names=master)
R> df
     master
id1     id1
id2     id2
id3     id3
id4     id4
id5     id5
id6     id6
id7     id7
id8     id8
id9     id9
id10   id10

Then you can add new columns for each subset the following way :

R> df[sub1, "sub1"] <- sub1
R> df[sub2, "sub2"] <- sub2

With the following result :

R> df
     master sub1 sub2
id1     id1 <NA>  id1
id2     id2  id2 <NA>
id3     id3  id3 <NA>
id4     id4 <NA>  id4
id5     id5  id5 <NA>
id6     id6 <NA> <NA>
id7     id7 <NA> <NA>
id8     id8 <NA>  id8
id9     id9 <NA>  id9
id10   id10 <NA> <NA>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文