gpt4 book ai didi

r - 在嵌套列表上使用 `as.data.frame` 时的列名

转载 作者:行者123 更新时间:2023-12-03 21:10:56 24 4
gpt4 key购买 nike

假设我们有一个嵌套列表 lst像下面

lst <- list(
A = list(a.x = 1:5, a.y = 6:10),
B = list(b.x = -(1:5), b.y = -(6:10), b.z = -(11:15))
)

> lst
$A
$A$a.x
[1] 1 2 3 4 5

$A$a.y
[1] 6 7 8 9 10


$B
$B$b.x
[1] -1 -2 -3 -4 -5

$B$b.y
[1] -6 -7 -8 -9 -10

$B$b.z
[1] -11 -12 -13 -14 -15
当我使用 df <- as.data.frame(lst) ,我们得到
> df
A.a.x A.a.y B.b.x B.b.y B.b.z
1 1 6 -1 -6 -11
2 2 7 -2 -7 -12
3 3 8 -3 -8 -13
4 4 9 -4 -9 -14
5 5 10 -5 -10 -15
可以看到, lst的不同层的名称由 . 连接生成列名,例如, A.a.x .因为我已经有了 .lst的更深层,例如, a.x ,列名如 A.a.x看起来有点困惑。
我想知道是否 .是使用 as.data.frame 时的默认连接符号在 list .否则,是否有任何可选参数允许用户在使用 . 时定义自己的符号(而不是 as.data.frame ) ?

最佳答案

更改名称的行是 line no: 68 in data.frame

paste(vnames[[i]], namesi, sep = ".")

如果我们使用一些 print陈述,就一目了然了。如 sep是硬编码的,只有当我们更改 body 时才能更改它函数的
do.call(f2, lst)
#[1] "before change"
#[1] "A"
#[1] "A"
#[1] "after change"
#[1] "A.a.x" "A.a.y"
#[1] "before change"
#[1] "B"
#[1] "B"
#[1] "after change"
#[1] "B.b.x" "B.b.y" "B.b.z"
其中“f2”是 print 的更改函数声明

关于r - 在嵌套列表上使用 `as.data.frame` 时的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63908114/

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