R使在1中唯一开始

R使在1中唯一开始,r,R,我有一个数据框,其中列按4组排列,如下所示: a b c d a b c d a b c d a b c d... 然后,我使用函数rep为列创建标记: rep(c("a", "b", "c", "d"), len=ncol) 最后,我使用函数make.unique创建标记: a b c d a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3... 然而,我想得到: a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3 a4 b4 c4 d4...

我有一个数据框,其中列按4组排列,如下所示:

a b c d a b c d a b c d a b c d...
然后,我使用函数
rep
为列创建标记:

rep(c("a", "b", "c", "d"), len=ncol)
最后,我使用函数
make.unique
创建标记:

a b c d a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3...
然而,我想得到:

a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3 a4 b4 c4 d4...

有没有一个简单的方法来实现这一点?在
make.unique
文档中,没有提到获得此行为的任何参数。

不会说这很漂亮,但它确实起到了作用:

> ncol <- 10
> apply(expand.grid(c("a","b","c","d"),1:((ncol+3)/4)), 1,
+   function(x)paste(x,collapse=""))[1:ncol]
 [1] "a1" "b1" "c1" "d1" "a2" "b2" "c2" "d2" "a3" "b3"
>ncol应用(扩展网格(c(“a”、“b”、“c”、“d”),1:((ncol+3)/4)),1,
+函数(x)粘贴(x,collapse=“”)[1:ncol]
[1] “a1”“b1”“c1”“d1”“a2”“b2”“c2”“d2”“a3”“b3”

其中,
ncol
是要生成的标记数。

不认为这很漂亮,但它确实起到了作用:

> ncol <- 10
> apply(expand.grid(c("a","b","c","d"),1:((ncol+3)/4)), 1,
+   function(x)paste(x,collapse=""))[1:ncol]
 [1] "a1" "b1" "c1" "d1" "a2" "b2" "c2" "d2" "a3" "b3"
n <- 4
ncol <- 16
paste(letters[seq(n)], rep(seq(ncol/n), each = n, len = ncol), sep = "")
>ncol应用(扩展网格(c(“a”、“b”、“c”、“d”),1:((ncol+3)/4)),1,
+函数(x)粘贴(x,collapse=“”)[1:ncol]
[1] “a1”“b1”“c1”“d1”“a2”“b2”“c2”“d2”“a3”“b3”
其中,
ncol
是要生成的标记数。

n
n
n <- 4
ncol <- 16
paste(letters[seq(n)], rep(seq(ncol/n), each = n, len = ncol), sep = "")
根据您的示例进行测试:

> u = rep(c("a", "b", "c", "d"), 4)
> make.unique.2(u)
  [1] "a.1" "b.1" "c.1" "d.1" "a.2" "b.2" "c.2" "d.2" "a.3" "b.3" "c.3" "d.3"
 [13] "a.4" "b.4" "c.4" "d.4"
如果未复制某个图元,则将其单独保留:

> u = c('a', 'a', 'b', 'c', 'c', 'c', 'd')
> make.unique.2(u)
[1] "a.1" "a.2" "b"   "c.1" "c.2" "c.3" "d"
根据您的示例进行测试:

> u = rep(c("a", "b", "c", "d"), 4)
> make.unique.2(u)
  [1] "a.1" "b.1" "c.1" "d.1" "a.2" "b.2" "c.2" "d.2" "a.3" "b.3" "c.3" "d.3"
 [13] "a.4" "b.4" "c.4" "d.4"
如果未复制某个图元,则将其单独保留:

> u = c('a', 'a', 'b', 'c', 'c', 'c', 'd')
> make.unique.2(u)
[1] "a.1" "a.2" "b"   "c.1" "c.2" "c.3" "d"

我真的很欣赏你的这个功能,完美的解决方案!我真的很欣赏你的这个功能,完美的解决方案!