【发布时间】:2019-06-14 17:28:28
【问题描述】:
我已经创建了这个测试框架。
library(lubridate)
set.seed(23)
date_list = seq(ymd('2000-01-01'),ymd('2003-12-31'),by='day')
testframe = data.frame(Date = date_list)
testframe$Day = substr(testframe$Date, start = 6, stop = 10)
testframe$ABC = rnorm(1461)
testframe$Year = as.numeric(format(testframe$Date,'%Y'))
testframe$Date = NULL
testframe = testframe[,c(ncol(testframe),1:(ncol(testframe)-1))]
我的问题是如何在数据框列表中执行此命令。这适用于单个数据框:
library(reshape)
testframe_t = cast(testframe, Year ~ Day)
但是当我创建一个数据框列表时,它不起作用。我的错在哪里?
df_list = list(testframe, testframe, testframe)
lapply(df_list, function(x) {
cast(df_list$x$Year ~ df_list$x$Day)})
有什么想法吗?
【问题讨论】:
-
cast(x, Year ~ Day)在函数体中应该可以工作 -
谢谢!抱歉,这太简单了……差点就搞定了。
-
我一直无法理解
reshape::cast。但是tidyr::gather和tidyr:spread为我点击。 tidyr.tidyverse.org仅供参考
标签: r list dataframe reshape lapply