R使在1中唯一开始
我有一个数据框,其中列按4组排列,如下所示: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...
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
是要生成的标记数。nn
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"
我真的很欣赏你的这个功能,完美的解决方案!我真的很欣赏你的这个功能,完美的解决方案!