gpt4 book ai didi

r - 使用 dplyr::select() 以数字作为名称选择多列

转载 作者:行者123 更新时间:2023-12-04 10:08:20 44 4
gpt4 key购买 nike

假设我有以下数据框:

a <- runif(10)
dd <- as.data.frame(t(a))
names(dd) <- c("ID", "a", "a2", "b", "b2", "f", "XXX", "1", "4", "8")

dplyr ,有一个很好的方法来选择多列。例如,要选择列 之间的列和专栏 f ,我可以用
dd %>% dplyr::select(a:f)

在我的问题中,数据框最后一部分的列可能会有所不同,但它们的名称总是介于 1 和 99 之间。但是,我似乎无法执行与上述相同的技巧:
> dd %>% select(1:99)
Error: Position must be between 0 and n
> dd %>% select("1":"99")
Error: Position must be between 0 and n

这是因为使用 select()尝试以这种方式按位置选择列。

我希望能够获得所有列在 之间的数据框 f , 以及标签为 之间的数字的那些1 99 .是否可以一次性完成 select() ?

最佳答案

以数字开头的列名(例如数据中的“1”和“8”)在语法上不是有效名称(请参阅 ?make.names )。然后查看 ?Quoutes 中的“名称和标识符”部分:“可以使用其他 [语法无效] 名称,前提是它们被引用。首选引用是反引号”。

因此,将无效的列名用反引号括起来( ` ):

dd %>% dplyr::select(a:f, `1`:`8`)

# a a2 b b2 f 1 4 8
# 1 0.2510023 0.4109819 0.6787226 0.4974859 0.01828614 0.7449878 0.1648462 0.5875638

另一种选择是使用 select 的 SE 版本。 , select_ :
dd %>% dplyr::select_(.dots = c("a", "a2", ..., "1", "4", "8"))

关于r - 使用 dplyr::select() 以数字作为名称选择多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38093584/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com