我对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>
答案 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)