R 将 data.frame 转换为按列列出

标签 r list dataframe

我想使用基本 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))

最佳答案

我们可以循环遍历 names 'DF' 除了第一个,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])

关于R 将 data.frame 转换为按列列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37643404/

相关文章:

r - 结合条件

python - NumPy 百分位函数不同于 MATLAB 的百分位函数

python - 将 n 个等长列表转换为具有一个列表中唯一键的字典

python - 为什么 foo.append(bar) 会影响列表列表中的所有元素?

python - 从带有索引的多列中选择最大值

python - 如何切片 Pandas 系列中每个元素的不同部分?

用 R 转置的结果应用

Rlattice xyplot与网格与轴的刻度不匹配(不是多重图)

python - 如何迭代 python 列表?

r - 如何将数据帧从observeEvent模块共享到另一个模块