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