r - 渲染 tibble 的 data.frame 列
问题描述
我想创建一个data.frame,其中的列是data.frame。为了正确格式化这个列,我定义了一个类(称为 idx)并为它提供了一个格式化方法。如果我首先创建一个普通的data.frame(这里有两列)然后添加这个列(结构保持不变,即长度为3),它会起作用。当我将我的data.frame强制为tibble时,结构被保留,但是data.frame的渲染丢失了(data.frame列被渲染为两个普通系列)
我已阅读 tibble 包的“扩展 tibble”小插图,并尝试使用所描述的支柱功能
id = c("Alabama", "Alabama", "Kentucky")
year = c(1998, 1999, 1998)
gdp = c(4.5, 3.2, 1.4)
unemp = c(1, 2, 8)
idx <- function(id, time)
structure(data.frame(id, time, stringsAsFactors = FALSE),
class = c("idx", "data.frame"))
format.idx <- function(x, ...)
paste(substr(x[[1]], 1, 2),
substr(x[[2]], nchar(x[[2]]) - 1,
nchar(x[[2]])), sep = ":")
z <- data.frame(gdp, unemp, idy = idx(id, year))
z
#> gdp unemp idy.id idy.time
#> 1 4.5 1 Alabama 1998
#> 2 3.2 2 Alabama 1999
#> 3 1.4 8 Kentucky 1998
names(z)
#> [1] "gdp" "unemp" "idy.id" "idy.time"
# This doesn't work, but it does if I add idy to an existing
# data.frame
z <- data.frame(gdp, unemp)
z$idy <- idx(id, year)
z
#> gdp unemp idy
#> 1 4.5 1 Al:98
#> 2 3.2 2 Al:99
#> 3 1.4 8 Ke:98
names(z)
#> [1] "gdp" "unemp" "idy"
z$idy
#> id time
#> 1 Alabama 1998
#> 2 Alabama 1999
#> 3 Kentucky 1998
z$idy$id
#> [1] "Alabama" "Alabama" "Kentucky"
# Coercing to a tibble, I get :
library("tibble")
zt <- as_tibble(z)
zt
#> # A tibble: 3 x 3
#> gdp unemp idy$id $time
#> <dbl> <dbl> <chr> <dbl>
#> 1 4.5 1 Alabama 1998
#> 2 3.2 2 Alabama 1999
#> 3 1.4 8 Kentucky 1998
names(zt)
#> [1] "gdp" "unemp" "idy"
zt$idy
#> id time
#> 1 Alabama 1998
#> 2 Alabama 1999
#> 3 Kentucky 1998
z$idy$id
#> [1] "Alabama" "Alabama" "Kentucky"
由reprex 包(v0.3.0)于 2019 年 9 月 5 日创建
我仍然无法获得 data.frame 列的所需渲染
解决方案
推荐阅读
- c# - 当对象的默认构造函数不为空时创建假失败
- html - 如何减少标签和输入字段之间的差距
- amazon-web-services - 内存存储 (Elasticache) 与持久数据存储 (Dynamodb) 之间的读/写延迟比较(高级数字)
- c# - 使用相同的表单 .net 身份注册多个用户
- python - 为什么我的查询不起作用?'异常值:不能将 QuerySet 用于“对话”:将 QuerySet 用于“配置文件”'
- python - Pandas DataFrame Groupby:如何计算满足条件的分组行数
- pythonanywhere - 尝试从 PythonAnywhere 将一些 python 脚本下载到我的计算机,但它一直打开另一个浏览器选项卡
- r - mutate_at() 重命名多个变量而不改变原始列
- python - 字典值打印出不寻常/奇怪的数字
- python - 如果找到多个匹配项,如何通过读取行来查找匹配项并将值添加到单独的变量中。= 使用 Python