[英]R to return max and min dates for list of dataframes
我使用以下代碼獲取 3 個不同數據幀的“日期”列的最大和最小日期。 我的控制台中沒有收到任何 output? 我做對了嗎,還是我需要創建一個單獨的 function 並使用 lapply?
df2 <- list(daily_activity,
+ hourly_activity,
+ sleep_day)
> for (i in 1:length(df2)){
+ max_date <- max(df2[[i]]$date)
+ min_date <- min(df2[[i]]$date)
+ return(c(max_date,min_date))
+ }
我們可以在list
使用lapply
lapply(df2, function(x) c(max(x$date, na.rm = TRUE),
min(x$date, na.rm = TRUE)))
1)在最后使用注釋中的可重現輸入,這給出了一個小標題,其第一行是最小值,第二行是最大值。
library(purrr)
map_df(L, ~ range(.$date))
## # A tibble: 2 × 3
## a b c
## <date> <date> <date>
## 1 1970-01-01 1970-01-01 1970-01-01
## 2 1970-01-04 1970-01-04 1970-01-04
2)如果您想專門使用for
修復問題中的代碼,則遍歷名稱並使用cat
顯示 output。
for (nm in names(L)) {
d <- L[[nm]]$date
max_date <- max(d)
min_date <- min(d)
cat(nm, format(max_date), format(min_date), "\n")
}
## a 1970-01-04 1970-01-01
## b 1970-01-04 1970-01-01
## c 1970-01-04 1970-01-01
或更短:
for (nm in names(L)) cat(nm, format(range(L[[nm]]$date)), "\n")
DF <- data.frame(date = .Date(0:3), v = 0:3)
L <- list(a = DF, b = DF, c = DF)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.