【发布时间】:2018-08-17 22:03:03
【问题描述】:
我有以下包含多个数据框的列表 列表中每个数据帧的长度为 2。
现在我想选择数据帧的第一列,其中一个是数据帧中最长的行并选择 列表中所有数据框的第二列
这里是数据集。
> dfs
$a
x a
1 1 0.1995464
2 2 0.9973094
3 3 0.9945370
4 4 0.8478068
5 7 0.2573278
6 8 0.1512301
7 9 0.7213563
8 10 0.6959976
$b
x b
1 1 0.8923419
2 2 0.3823957
3 3 0.3657654
4 4 0.6348854
5 5 0.5990311
$c
x c
1 1 0.041083504
2 2 0.971180447
3 3 0.403722147
4 4 0.001057452
5 5 0.459418331
6 6 0.964972695
以及每个数据框的维度
> lapply(dfs,function(x) dim(x))
$a
[1] 8 2
$b
[1] 5 2
$c
[1] 6 2
这里 a 是最长的行 (nrow.)
所以数据框的第一列与
所有数据框的第二列
所需的输出格式:
$x
[1] 1 2 3 4 7 8 9 10
$a
[1] 0.1995464 0.9973094 0.9945370 0.8478068 0.2573278
[6] 0.1512301 0.7213563 0.6959976
$b
[1] 0.8923419 0.3823957 0.3657654 0.6348854 0.5990311
$c
[1] 0.041083504 0.971180447 0.403722147 0.001057452
[5] 0.459418331 0.964972695
> lapply(dfs,function(x) x[,2])
上面的代码可以选择所有数据框的 2 列 但是如何在datafame中选择Column的最大行。
谢谢。
> dput(dfs)
structure(list(a = structure(list(x = c(1L, 2L, 3L, 4L, 7L, 8L,
9L, 10L), a = c(0.199546368792653, 0.997309415135533, 0.994537038262933,
0.847806796897203, 0.257327824598178, 0.151230089599267, 0.721356318565086,
0.695997633039951)), .Names = c("x", "a"), row.names = c(NA,
-8L), class = "data.frame"), b = structure(list(x = 1:5, b = c(0.892341891303658,
0.382395694730803, 0.365765440743417, 0.634885413805023, 0.599031136371195
)), .Names = c("x", "b"), row.names = c(NA, -5L), class = "data.frame"),
c = structure(list(x = 1:6, c = c(0.0410835035145283, 0.971180446678773,
0.403722146525979, 0.00105745159089565, 0.4594183312729,
0.964972694870085)), .Names = c("x", "c"), row.names = c(NA,
-6L), class = "data.frame")), .Names = c("a", "b", "c"))
【问题讨论】:
标签: r