r-基于另一个向量的条件向量创建



我是R的新用户。考虑到以下向量example <- c (15 1 1 1 7 8 8 9 5 9 5),我想创建两个额外的向量,第一个只包含重复的数字,第二个包含不重复的数字。类似于:

example1 <- c (15, 7)

example2 <- c (1, 8, 9, 5)

感谢您的支持。

使用注释末尾可重复显示的exampledups由重复的元素组成,singles是其余元素。这总是给出两个向量(如果没有重复,则一个向量的长度为零,如果没有单个向量,则为零(,并且它直接使用数值,而不将其转换为字符。

dups <- unique(example[duplicated(example)])
singles <- setdiff(example, dups)
dups
## [1] 1 8 9 5
singles
## [1] 15  7

备注

问题中显示的输入不是有效的R语法,因此我们在此处提供可复制的输入:

example <- scan(text = "15 1 1 1 7 8 8 9 5 9 5", quiet = TRUE)

您可以使用table:计算值的外观

example <- c(15,1,1,1,7,8,8,9,5,9,5)
tt <- table(example)

表的名称是计数值,因此您可以写:

repeatedValues <- as.numeric(names(tt)[tt>1])
uniqueValues <- as.numeric(names(tt))[tt==1]

这里有一个使用rle的单行线,它将结果向量放在列表中:

split(rle(sort(example))$values, rle(sort(example))$lengths < 2)
#> $`FALSE`
#> [1] 1 5 8 9
#> $`TRUE`
#> [1]  7 15

最新更新