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