我试图在不使用唯一函数的情况下摆脱向量中的重复项(因为该函数在那种情况下不起作用)。 我的循环如下:
#finding and deleting duplicates
dupes <- function(x) {
for (i in 1:(length(x))){
while (is_true(all.equal(x[i],x[i+1]))){
x=x[-i]
}
}
print(x)
}
我想通过该函数运行一个向量,并返回一个向量(没有重复)。
答案 0 :(得分:2)
这是一种简单的方法-
# for numeric vector
x <- c(1:8, 4:10)
# [1] 1 2 3 4 5 6 7 8 4 5 6 7 8 9 10
x[ave(x, x, FUN = seq_along) == 1]
# [1] 1 2 3 4 5 6 7 8 9 10
# for character vector
x <- as.character(iris$Species)
x[ave(x, x, FUN = seq_along) == 1]
# [1] "setosa" "versicolor" "virginica"
答案 1 :(得分:1)
这里有两种方法,假设您的向量不是数字(即它是整数或字符),
set.seed(666)
v1 <- sample(15:20, 10, replace = TRUE)
as.integer(names(table(v1)))
#[1] 15 16 17 19 20
rle(sort(v1))$values
#[1] 15 16 17 19 20
答案 2 :(得分:0)
dplyr的distinct()
函数将为您服务。
library(dplyr)
df_new <- distinct(your_vector)