我在 R 的串列中有 2 個串列。每個子串列包含不同數量的資料幀。資料如下所示:
df1 <- data.frame(x = 1:5, y = letters[1:5])
df2 <- data.frame(x = 1:15, y = letters[1:15])
df3 <- data.frame(x = 1:25, y = letters[1:25])
df4 <- data.frame(x = 1:6, y = letters[1:6])
df5 <- data.frame(x = 1:8, y = letters[1:8])
l1 <- list(df1, df2)
l2 <- list(df3, df4, df5)
mylist <- list(l1, l2)
我想計算我在 mylist 中的資料幀總數(答案應該是 5,因為我總共有 5 個資料幀)。
uj5u.com熱心網友回復:
使用lengths():
sum(lengths(mylist)) # 5
來自官方檔案:
[...] sapply(x, length) 的更高效版本
uj5u.com熱心網友回復:
library(purrr)
mylist |> map(length) |> simplify() |> sum()
uj5u.com熱心網友回復:
你可以試試
lapply(mylist,length) |> unlist() |> sum()
uj5u.com熱心網友回復:
length(unlist(mylist, recursive = F))應該管用。
uj5u.com熱心網友回復:
這個怎么樣:
sum(sapply(mylist, length))
uj5u.com熱心網友回復:
另一種可能的解決方案:
library(tidyverse)
mylist %>% flatten %>% length
#> [1] 5
uj5u.com熱心網友回復:
您可以unlist使用length.
length(unlist(mylist, recursive = F))
# [1] 5
對于任意長度的串列,可以使用rrapply::rrapply:
length(rrapply(mylist, classes = "data.frame", how = "flatten"))
# 5
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/462279.html
