【问题标题】:R convert data.frame to list by columnR将data.frame转换为按列列出
【发布时间】:2016-10-05 05:36:08
【问题描述】:

我想使用基本 R 函数按列将 data.frame 转换为 data.frames 列表,并保持第一列不变。例如,我想将 DF 拆分为三个 data.frames 的列表,每个数据帧都包含第一列。也就是说,我希望最终得到名为 LONG 的列表,而不必分别输入每个列表元素。谢谢。

DF <- data.frame(OBS=1:10,HEIGHT=rnorm(10),WEIGHT=rnorm(10),TEMP=rnorm(10))
DF

LONG <- list(HEIGHT = DF[c("OBS", "HEIGHT")],
             WEIGHT = DF[c("OBS", "WEIGHT")],
             TEMP   = DF[c("OBS", "TEMP"  )])

LONG

SHORT <- as.list(DF)
SHORT

SPLIT <- split(DF, col(DF))

【问题讨论】:

标签: r list dataframe


【解决方案1】:

我们可以循环遍历 'DF' 的 names 除了第一个,cbind 第一列包含来自names 的 'DF' 的子集。

setNames(lapply(names(DF)[-1], function(x) cbind(DF[1], DF[x])), names(DF)[-1])

或者另一种选择是

Map(cbind, split.default(DF[-1], names(DF)[-1]), OBS=DF[1])

【讨论】:

  • 为什么使用 split.default 而不仅仅是拆分?
  • @user1491868 将split 数据集根据名称模式转换为数据框列表。在这种情况下,即使 Map(cbind, DF[-1], OBS = DF[1]) 也应该可以工作
猜你喜欢
  • 1970-01-01
  • 2022-01-02
  • 2020-07-17
  • 2017-11-20
  • 2021-12-10
  • 2014-05-17
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多