Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
data.table中dplyr rowwsie combn的等效值_R_Data.table - Fatal编程技术网

data.table中dplyr rowwsie combn的等效值

data.table中dplyr rowwsie combn的等效值,r,data.table,R,Data.table,我有一段代码,它对特定数据帧的所有值执行combn。这是通过使用dplyr行方式完成的 library(dplyr,warn.conflicts = FALSE) library(tidyr) Column1<-c("red","blue")#creating column1 Column2<-c("green","white")#creating column2 Column3<-c("

我有一段代码,它对特定数据帧的所有值执行combn。这是通过使用dplyr行方式完成的

library(dplyr,warn.conflicts = FALSE)
library(tidyr)
Column1<-c("red","blue")#creating column1
Column2<-c("green","white")#creating column2
Column3<-c("aqua","magenta")#creating column2
df_1<-data.frame(Column1, Column2, Column3)#creating data frame
df_2 <- df_1 %>% rowwise() %>% 
  mutate(COMB=list(combn(c_across(Column1:Column3),2,simplify = FALSE))) %>% 
  unnest(cols = COMB) %>% 
  unnest(cols=COMB)
由v0.3.0于2020年11月7日创建

结果如下

| \# A tibble: 12 x 4                |
|------------------------------------|
|    Column1 Column2 Column3 COMB    |
|    <chr>   <chr>   <chr>   <chr>   |
|  1 red     green   aqua    red     |
|  2 red     green   aqua    green   |
|  3 red     green   aqua    red     |
|  4 red     green   aqua    aqua    |
|  5 red     green   aqua    green   |
|  6 red     green   aqua    aqua    |
|  7 blue    white   magenta blue    |
|  8 blue    white   magenta white   |
|  9 blue    white   magenta blue    |
| 10 blue    white   magenta magenta |
| 11 blue    white   magenta white   |
| 12 blue    white   magenta magenta |
library(data.table)
Column1<-c("red","blue")#creating column1
Column2<-c("green","white")#creating column2
Column3<-c("aqua","magenta")#creating column2
df_1<-data.table(Column1, Column2, Column3)#creating DT
是否可以在data.table中执行按行梳理功能。例如,在以下方面:

| \# A tibble: 12 x 4                |
|------------------------------------|
|    Column1 Column2 Column3 COMB    |
|    <chr>   <chr>   <chr>   <chr>   |
|  1 red     green   aqua    red     |
|  2 red     green   aqua    green   |
|  3 red     green   aqua    red     |
|  4 red     green   aqua    aqua    |
|  5 red     green   aqua    green   |
|  6 red     green   aqua    aqua    |
|  7 blue    white   magenta blue    |
|  8 blue    white   magenta white   |
|  9 blue    white   magenta blue    |
| 10 blue    white   magenta magenta |
| 11 blue    white   magenta white   |
| 12 blue    white   magenta magenta |
library(data.table)
Column1<-c("red","blue")#creating column1
Column2<-c("green","white")#creating column2
Column3<-c("aqua","magenta")#creating column2
df_1<-data.table(Column1, Column2, Column3)#creating DT
由v0.3.0和data.table于2020-11-07创建,我们可以使用Map创建“梳”

在哪里

使用data.table,我们可以使用Map创建“COMB”

在哪里


您可以获取长格式的数据,并为每行创建组合

library(data.table)

df_1[, row := seq_len(.N)]
df_2 <- melt(df_1, id.vars = 'row')
df_1[df_2[, combn(value, 2), row], on = 'row'][, row := NULL][]

#    Column1 Column2 Column3      V1
# 1:     red   green    aqua     red
# 2:     red   green    aqua   green
# 3:     red   green    aqua     red
# 4:     red   green    aqua    aqua
# 5:     red   green    aqua   green
# 6:     red   green    aqua    aqua
# 7:    blue   white magenta    blue
# 8:    blue   white magenta   white
# 9:    blue   white magenta    blue
#10:    blue   white magenta magenta
#11:    blue   white magenta   white
#12:    blue   white magenta magenta

您可以获取长格式的数据,并为每行创建组合

library(data.table)

df_1[, row := seq_len(.N)]
df_2 <- melt(df_1, id.vars = 'row')
df_1[df_2[, combn(value, 2), row], on = 'row'][, row := NULL][]

#    Column1 Column2 Column3      V1
# 1:     red   green    aqua     red
# 2:     red   green    aqua   green
# 3:     red   green    aqua     red
# 4:     red   green    aqua    aqua
# 5:     red   green    aqua   green
# 6:     red   green    aqua    aqua
# 7:    blue   white magenta    blue
# 8:    blue   white magenta   white
# 9:    blue   white magenta    blue
#10:    blue   white magenta magenta
#11:    blue   white magenta   white
#12:    blue   white magenta magenta

非常感谢@akrun。这是我想要的结果。它工作得很好。我是data.table的新手,我有一个后续问题要问你。如果DT由Column1,Column2,Column3,Column4,Column5组成,而我只想将Column1,Column4,Column5作为x传递给combnx,2,那么我如何调整您的解决方案dfu 1[,grp:=seq_len.N][df u 1[,combnunlist.SD,2,.grp],on=.grp][,grp:=NULL]到该值?AFAIR Map只能换行到mapply,mapply的API对我来说总是更容易使用。如果DT中存在不需要的combn列,那么调整akrun的解决方案以适应该场景df_1Many感谢@akrun。这是我想要的结果。它工作得很好。我是data.table的新手,我有一个后续问题要问你。如果DT由Column1,Column2,Column3,Column4,Column5组成,而我只想将Column1,Column4,Column5作为x传递给combnx,2,那么我如何调整您的解决方案dfu 1[,grp:=seq_len.N][df u 1[,combnunlist.SD,2,.grp],on=.grp][,grp:=NULL]到该值?AFAIR Map只能换行到mapply,mapply的API对我来说总是比较容易使用的。如果DT中存在不需要的combn列,那么调整akrun的解决方案以适应该场景df_1
library(data.table)

df_1[, row := seq_len(.N)]
df_2 <- melt(df_1, id.vars = 'row')
df_1[df_2[, combn(value, 2), row], on = 'row'][, row := NULL][]

#    Column1 Column2 Column3      V1
# 1:     red   green    aqua     red
# 2:     red   green    aqua   green
# 3:     red   green    aqua     red
# 4:     red   green    aqua    aqua
# 5:     red   green    aqua   green
# 6:     red   green    aqua    aqua
# 7:    blue   white magenta    blue
# 8:    blue   white magenta   white
# 9:    blue   white magenta    blue
#10:    blue   white magenta magenta
#11:    blue   white magenta   white
#12:    blue   white magenta magenta