R-如何将数据帧分为具有特定标头组合的数据帧列表

时间:2018-09-13 20:50:38

标签: r

我对R非常陌生,可以寻求帮助。

我正在尝试将数据帧拆分为数据帧列表,该列表由列1的每个可能对与随后的每个列组成。

例如,给定以下数据:

df <- data.frame ("Time" = c("Mon","TUE", "WED"), VarA = c(2,5,6), VarB = c(24,46,14))

我想以列表中包含的两个数据帧结束。第一个是“时间”和“ VarA”列,第二个是“时间”和“ VarB”列。

理想情况下,创建此列表的函数可扩展成数百个时变对。最终目标是要有一个数据帧列表,以便我可以使用lapply对数据进行各种计算。

思考我可以使用split.data.frame将我的原始数据帧变成原始数据帧的特定子集的列表,但是我很难正确设置参数。 / p>

1 个答案:

答案 0 :(得分:1)

您希望每一列都是一个单独的数据框吗?

lapply(2:ncol(df), function (j) df[c(1, j)])

使用split的解决方案在这里效果不佳。如果要拆分每列,split所做的算法实际上是开销。从What is the algorithm behind R core's `split` function?

了解有关split的更多信息

如果您在理解代码方面有困难,请分两个步骤进行操作。

# define a function
f <- function (j) df[c(1, j)]

## try the function to see that it does
f(2)
f(3)

# use a lapply loop
result <- lapply(2:ncol(df), f)