Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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
如何在R中的melt()之后添加列表项的索引_R - Fatal编程技术网

如何在R中的melt()之后添加列表项的索引

如何在R中的melt()之后添加列表项的索引,r,R,我的工作清单如下: > l <- list(c(2,4,9), c(4,2,6,1)) > m <- melt(l) > m value L1 2 1 4 1 9 1 4 2 2 2 6 2 1 2 i指示3个值属于第一个列表元素,4个值属于第二个列表元素 请问我该如何存档它,有人能帮忙吗?不如ave优雅,但工作: transform(m, i=un

我的工作清单如下:

  > l <- list(c(2,4,9), c(4,2,6,1))
  > m <- melt(l)
  > m 
  value L1
      2  1
      4  1
      9  1
      4  2
      2  2
      6  2
      1  2
i
指示3个值属于第一个列表元素,4个值属于第二个列表元素


请问我该如何存档它,有人能帮忙吗?

不如
ave
优雅,但工作:

transform(m, i=unlist(sapply(rle(m$L1)$length, seq_len)))
#  value L1 i
#1     2  1 1
#2     4  1 2
#3     9  1 3
#4     4  2 1
#5     2  2 2
#6     6  2 3
#7     1  2 4


m$i不如
ave
优雅,但工作:

transform(m, i=unlist(sapply(rle(m$L1)$length, seq_len)))
#  value L1 i
#1     2  1 1
#2     4  1 2
#3     9  1 3
#4     4  2 1
#5     2  2 2
#6     6  2 3
#7     1  2 4


m$i您可以使用
splitstackshape

library(splitstackshape)
getanID(m, 'L1')[]
#   value L1 .id
#1:     2  1   1
#2:     4  1   2
#3:     9  1   3
#4:     4  2   1
#5:     2  2   2
#6:     6  2   3
#7:     1  2   4
或使用
base R

transform(stack(setNames(l, seq_along(l))), .id= rapply(l, seq_along))

您可以使用
splitstackshape

library(splitstackshape)
getanID(m, 'L1')[]
#   value L1 .id
#1:     2  1   1
#2:     4  1   2
#3:     9  1   3
#4:     4  2   1
#5:     2  2   2
#6:     6  2   3
#7:     1  2   4
或使用
base R

transform(stack(setNames(l, seq_along(l))), .id= rapply(l, seq_along))

为了完整起见,还有其他一些选择

data.table(这基本上就是
getanID
正在做的事情)

dplyr

library(dplyr)
m %>%
  group_by(L1) %>%
  mutate(i = row_number())
基本R(摘自@user20650的评论)


为了完整起见,还有其他一些选择

data.table(这基本上就是
getanID
正在做的事情)

dplyr

library(dplyr)
m %>%
  group_by(L1) %>%
  mutate(i = row_number())
基本R(摘自@user20650的评论)


熔化后做,
m$i
setDT(m)[,i:=seq_len(.N),L1]
数据表
pacage熔化后做,
m$i
setDT(m)[,i:=seq_len(.N),L1]
数据表
pacage不知道序列,真的很好!!哦,在赛昆斯背后藏着一个聪明的。。。!为了这个发现!不知道序列,真的很好!!哦,在赛昆斯背后藏着一个聪明的。。。!为了这个发现!