【发布时间】:2020-11-30 23:23:25
【问题描述】:
我有以下功能:
get_ym = function(x) {
paste0(str_replace(str_sub(deparse(substitute(x)), start= -11, end = -5), "[.]","-"), "-01")
}
当应用于单个对象时,它可以正常工作,如下所示:
get_ym(device.2019.01.csv)
[1] "2019-01-01"
我想将此函数应用于本质上相同但日期不同的对象列表,例如 device.2019.02.csv、device.2020.03.csv 等。
当我使用 lapply 时,输出不是我想要的。
lapply(device_files, get_ym)
[[1]]
[1] "X[-01"
[[2]]
[1] "X[-01"
等等。
此外,我想使用 get_ym 函数在列表中的所有对象中创建新列。所以我写了
apply_ym = function(x) {
x$month = get_ym(x)
}
apply_ym(device.2020.03.csv)
但这不适用于单个对象,更不用说应用于列表时。
我做错了什么?
编辑
device_files 是这样创建的对象列表:
device_files = list.files(pattern = "^device.2")
device_files = strsplit(device_files, split = " ")
【问题讨论】:
-
您的“device_files”列表看起来如何/如何创建它
-
device_files = list.files(pattern = "^device.2") device_files = strsplit(device_files, split = " ") 是一个基于模式的文件列表,有18个文件。
-
@Ronak Shah 是对的,看来摆脱替代()会解决你的问题。
标签: r tidyverse data-wrangling