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