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

use*_*868 9 r list dataframe

我想使用基本R函数将data.frame转换为data.frames列表并保持第一列常量.例如,我想将DF拆分为三个data.frames列表,每个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))
Run Code Online (Sandbox Code Playgroud)

akr*_*run 10

我们可以遍历names'DF'除了第一个,cbind第一个列带有'DF'的子集names.

setNames(lapply(names(DF)[-1], function(x) cbind(DF[1], DF[x])), names(DF)[-1])
Run Code Online (Sandbox Code Playgroud)

或者另一种选择

Map(cbind, split.default(DF[-1], names(DF)[-1]), OBS=DF[1])
Run Code Online (Sandbox Code Playgroud)