R 中使用列表(作为 tibble 列)进行向量化?

问题描述 投票:0回答:1

我正在以广泛的格式处理不同个体的时间序列数据。时间点的数量因人而异。现在,问题是我需要每个人的最后一个元素。

我正在考虑使用列表作为我的小标题中的一列来存储时间序列序列。 (将每个时间点放入不同的列中可能不是一个好主意,因为可能有数百个可能的时间点,但一个人只能拥有其中少数几个的数据,但是,每个人的数据始终是连续测量的时间点。)

我们将其称为“column1”,即:

library(tibble)
# Create an example dataframe
df <- tibble(
  column1 = list(1:3, 1:4, 4:8)
)

现在,为了效率和速度,我想使用矢量化,但是对于给定的数据结构是否可能? purrr 包中有一个名为 map() 的函数,使用它的操作如下:

library(purrr)

# Use the map function to select the last element of each vector
last_elements <- map(df$column1, ~ .x[length(.x)])

但这不是向量化,而是循环遍历列表的元素(存储为column1),对吗?

对于数据结构来说,是否有比列表作为列更好(即更快/更高效)的选择?或者这通常是处理这种情况的最佳方法?

r vectorization purrr tibble
1个回答
0
投票
library(tidyverse)

df %>%  
  mutate(column1 = map_int(column1, last))

# A tibble: 3 × 1
  column1
    <int>
1       3
2       4
3       8
© www.soinside.com 2019 - 2024. All rights reserved.