gpt4 book ai didi

r - dplyr 中的长变量名称失败

转载 作者:行者123 更新时间:2023-12-02 09:35:24 28 4
gpt4 key购买 nike

超过 39 个字符的字符串在 dplyr 中失败,返回错误:“错误:索引超出范围”。

我是不是遗漏了什么或者这是一个错误?

40 个字符无效:

library(dplyr)

names(iris)[5] <- "vvv_5vvv10vvv15vvv20vvv25vvv30vvv35vvv40"

iris %>% dplyr::group_by( vvv_5vvv10vvv15vvv20vvv25vvv30vvv35vvv40 ) %>%

dplyr::summarise( n() )

给我错误:错误:索引越界

39个字符有效:

names(iris)[5]   <- "vvv_5vvv10vvv15vvv20vvv25vvv30vvv35vv39"

iris %>% dplyr::group_by( vvv_5vvv10vvv15vvv20vvv25vvv30vvv35vv39 ) %>%

dplyr::summarise( n() )

工作正常。给我这个(期望的)输出

Source: local data frame [3 x 2]

vvv_5vvv10vvv15vvv20vvv25vvv30vvv35vv39 n()
1 setosa 50
2 versicolor 50
3 virginica 5

session 信息()

> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=Danish_Denmark.1252 LC_CTYPE=Danish_Denmark.1252 LC_MONETARY=Danish_Denmark.1252 LC_NUMERIC=C
[5] LC_TIME=Danish_Denmark.1252

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] dplyr_0.3.0.2

loaded via a namespace (and not attached):
[1] assertthat_0.1 DBI_0.3.1 lazyeval_0.1.9 magrittr_1.0.1 parallel_3.1.1 Rcpp_0.11.3 tools_3.1.1

最佳答案

这好像是a known issue , 将在 dplyr 0.3.1 中修复。来自@romainfrancois 在帖子中的回复:

“它发生在这里[...]

new_groups <- lazyeval::auto_name(new_groups)

因为:

lazyeval::auto_name
function (x, max_width = 40)
{
names(x) <- auto_names(x, max_width = max_width)
x
}
<environment: namespace:lazyeval>

更新
dplyr 0.4.0 “由于 lazyeval 中的修复,group_by() 支持超过 39 个字符的变量”:

library(dplyr)
# Variable name with 40 characters
names(iris)[5] <- "vvv_5vvv10vvv15vvv20vvv25vvv30vvv35vvv40"

iris %>%
group_by(vvv_5vvv10vvv15vvv20vvv25vvv30vvv35vvv40) %>%
summarise(n())
# vvv_5vvv10vvv15vvv20vvv25vvv30vvv35vvv40 n()
# 1 setosa 50
# 2 versicolor 50
# 3 virginica 50

关于r - dplyr 中的长变量名称失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26927812/

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