Учитывая некоторые примеры данных для справки:
sn,fail_type,dt
V12001,broken ego,2018-12-07 15:58:33
V12002,batt overheat,2018-10-11 22:33:51
V12003,batt overheat,2018-10-26 15:02:51
V12004,broken ego,2018-09-28 15:44:46
V12005,cognitive meltdown,2018-12-31 02:30:04
V12006,won't turn on,2018-12-14 02:05:41
V12007,won't turn on,2018-12-02 21:14:29
V12008,bad system board,2018-11-02 16:30:57
V12009,petulant child operator,2018-09-06 14:53:25
V12010,leaky pump,2018-11-05 14:41:48
V12011,leaky pump,2018-11-04 18:05:11
V12012,petulant child operator,2018-11-23 16:34:54
V12013,cognitive meltdown,2018-09-11 18:07:50
V12014,cognitive meltdown,2018-10-26 22:55:32
V12015,leaky pump,2018-09-19 14:05:29
V12016,no alarm,2018-11-05 23:44:08
V12017,petulant child operator,2018-12-18 14:02:34
V12018,leaky pump,2018-10-08 04:13:41
V12019,bad system board,2018-09-03 02:28:16
V12020,leaky pump,2018-11-10 07:10:50
Я создаю таблицу данных с именем ts_vars из приведенного выше.
Затем я хочу изолировать уникальный список fail_types и получить время-серии данных о событиях, основанные на каждом уникальном типе fail_type.
# get unique list
ft_list <- unique(ts_vars$fail_type)
# clean up unnecessary punctuation
ft_list <- gsub("[[:punct:]]", " ", ft_list)
Следующее, что я хочу сделать, это создать список выражений, которые можно выполнять построчно, и присваивания, сохраненные в памяти как Iбудет использовать их для построения (да, много из них).Я знаю, я знаю, я использую цикл for
, и методы apply / plyr'ish лучше, но выкладываем это как быстрый / грязный MWE.
cmdvec <- function() {
for (i in (1:length(ft_list))) {
# name a variable, ts_var, with a numeric suffix
nam <- paste("ts_var",i, sep="")
# stitch together an assignment statement which will store a vector of
events by fail_type, allowing a separate plot for each
sub <- paste("subset(ts_vars,ts_vars$fail_type==",ft_list[i], sep="'", ")")
ts_cmd[i] <- paste(nam,sub,sep=" <- ")
# parse each statement to be evaluated and store in a vector for execution
ts_cmd2 <- as.vector(eval(parse(text = ts_cmd[i]), envir = new.env()))
ts_cmd2
# print(ts_cmd2)
}
}
cmdvec()
Как естьничего не происходит на самом деле.Я не вижу ни результатов выполнения, ни новых сохраненных векторов (ts_var1 through ts_var187
).Если я заменю ts_cmd
на print(ts_cmd)
, операторы будут оценены, и я получу результаты в консоли, но ни одно из назначений не сохранится.
Я пытался вычислить последний оператор, вызвать его (но я не могу понять, какие параметры я бы добавил), преобразовать список символов в выражения - но здесь я упускаю некоторые критические моменты,и я думаю, что я прочитал все документы в базе R на этом и выбрал некоторые идеи из других вопросов касательно SO.Я в тупике сейчас.В общем, я просто не могу передать простой список утверждений в виде добросовестных команд, которые должны обрабатываться одна за другой, и иметь переменную присваивания для последующего использования (графики, другие независимые анализы и т. Д.).
Есть мысли?