R 按时间对数据帧列表进行子集设置

R 按时间对数据帧列表进行子集设置,r,list,dataframe,time,subset,R,List,Dataframe,Time,Subset,我有多个.csv文件中的GPS数据,我已使用以下代码导入这些文件: library(readr) library(tidyverse) # Data import from target folder filelist <- list.files("data", pattern = "*.csv") filenames <- paste(mgsub::mgsub(filelist, c(

我有多个.csv文件中的GPS数据,我已使用以下代码导入这些文件:

library(readr)
library(tidyverse)

# Data import from target folder

filelist <- list.files("data", pattern = "*.csv")

  filenames <- paste(mgsub::mgsub(filelist, 
                                           c("_", "samples.csv", "[[:digit:]]+"), 
                                           c("", "", "")), sep = "")

  setwd("data")

  data <- sapply(filelist, 
                 read_csv,
                 col_types = cols(Uhrzeit = col_time(format = "%H:%M:%OS"), 
                                  Uhrzeit_1 = col_time(format = "%H:%M:%OS")),
                 simplify = FALSE)



  names(data) <- filenames


  colnames <- c("Aufnahmezeit", 
                "Uhrzeit", 
                "Herzfrequenz [S/min]", 
                "Geschwindigkeit [km/h]", 
                "Distanz [m]", 
                "Beschleunigung [m/s²]", 
                "Schrittfrequenz")

  data <- lapply(data, setNames, colnames)
现在,我想使用重命名的列“Uhrzeit”作为参考点对数据进行子集划分。我尝试了以下方法:

lapply(data, subset(Uhrzeit >= 46000))
返回此错误的:

Error in subset.default(data, Uhrzeit >= 46000) : 
  object 'Uhrzeit' not found
我推测我需要为lappy函数创建一个列表来使用,例如as.list(data),但也无法让它工作

任何帮助都将不胜感激

试试看:

lapply(data, function(x) subset(x, Uhrzeit >= 46000))
或者使用
dplyr
map

library(dplyr)
purrr::map(data, ~.x %>% filter(Uhrzeit >= 46000))

我们可以将
base R
[

lapply(data, function(x) x[x$Uhrzeit >= 46000,])
如果我们打算
子集使用匿名函数

lapply(data, subset, subset = Uhrzeit >= 46000)

或使用
data.table

library(data.table)
lapply(data, function(x) as.data.table(x)[Uhrzeit >= 46000])
library(data.table)
lapply(data, function(x) as.data.table(x)[Uhrzeit >= 46000])