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

标签 r list dataframe

假设我们有一个嵌套列表 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/

相关文章:

R计算每年超标的天数

r - 使用 R 使用 lm 函数回归时遇到问题

r - 是什么导致了 tidyr 警告消息 : "attributes are not identical across measure variables"

jquery计算顶级UL中的li数

r - 将相关的嵌套列表元素向量组合成矩阵

r - 删除具有重复值的行并将 NA 作为单独的值包含在内

python - 根据时间间隔连接 Pandas 数据帧并计算平均值

r - 从 SSIS 包执行 R 脚本

python - 将列表项转换为元组

python - 从 python 数据框的列构造二分图