r 指向量中的第一个元素

问题描述 投票:1回答:1

我有一个由数百种动物组成的向量(这些动物都不重复),我希望 "鲸鱼 "排在第一位。我不关心任何其他元素的顺序,我也不能指定类似字母顺序的东西。我怎样才能让这样的东西。

animals <- c("cat", "dog", "whale", "pig", "zebra", "emu")

不用重新输入每一个元素就能变成这样

whale_first <- c("whale", "cat", "dog", "pig", "zebra", "emu")

我试过用sort()和str_order(), 但我找不到只指定第一个元素的方法。另外,在最后的答案中,其他动物的顺序并不重要。我的例子中除了鲸鱼之外,其他动物的顺序都是一样的,但是我可以接受其他动物的任何顺序。

谢谢!我有一个上百个动物的矢量。

r string sorting vector stringr
1个回答
1
投票

一个单行本是 setdiff (假设没有重复)

c("whale", setdiff(animals, 'whale'))

如果有重复,使用 vsetdiff

library(vecsets)
c("whale", vsetdiff(animals, 'whale'))

1
投票

交换。

first <- animals[1]
i <- grep("whale", animals)
animals[1] <- animals[i]
animals[i] <- first

如果你不在乎:

i <- grep("whale", animals)
c(animals[i],animals[-i])

当然你也可以这样做。

c("whale", grep("whale", animals, value = TRUE, invert=TRUE))

0
投票

一个基本的R方法,是安全的 复制是重新排序因素。

animals = factor(animals)
levels(animals) = c('whale', setdiff(levels(animals), 'whale'))
animals = as.character(animals)
© www.soinside.com 2019 - 2024. All rights reserved.