Ես փորձում եմ գրել ֆունկցիա, որը ստեղծում է տվյալների շրջանակից lm օբյեկտների ցանկ՝ իմ տվյալների հավաքածուի յուրաքանչյուր յուրահատուկ ամսաթվի համար տարբեր lm-ով: Այնուհետև ես կցանկանայի այս lms-ը փոխանցել predict()-ին նոր տվյալների շրջանակով՝ կանխատեսված արժեքներ և վստահության միջակայքեր ստեղծելու համար:
Տվյալներն այսպիսի տեսք ունեն.
Date ppm area
10/18/2019 0 0
10/18/2019 0 0
10/18/2019 0.1 438.9804
10/18/2019 0.1 447.1784
10/18/2019 0.1 443.7794
10/18/2019 1 3232.2088
10/18/2019 1 3206.6672
10/18/2019 1 3206.232
10/24/2019 0 0
10/24/2019 0 15.98
10/24/2019 0 0
10/24/2019 0 0
10/24/2019 0.1 379.387
10/24/2019 0.1 325.5268
10/24/2019 0.1 325.8126
10/24/2019 0.1 310.5972
10/24/2019 1 3259.366
10/24/2019 1 3218.0836
10/24/2019 1 3192.7076
Առաջին մասը պարզ է թվում՝ գրելով ֆունկցիա, որը յուրաքանչյուր ամսաթվի համար ստեղծում է տարբեր lm.
standard.lm= function(standards,
date_field = "date",
peak_field,
std_field,
peak_field2 = NA){
library(tidyverse)
library(broom)
y = standards %>% nest(-date_field) %>%
mutate(fit = map(data, ~lm(.[[std_field]] ~ .[[peak_field]], data = .)))
return(y) }
Այնուհետև ես կարող եմ գործարկել հրամանը.
test = standard.lm(standard_data, std_field = "std.ppm", peak_field = "area")
Սա լավ է աշխատում յուրաքանչյուր ամսաթվի համար lms ստեղծելու համար, բայց խնդիրն այն է, որ գործակիցը կոչվում է.[[peak_field]]
՝ ոչ թե "area"
:
Սա ինձ համար խնդիր է ստեղծում, քանի որ ես կցանկանայի այս lm օբյեկտները փոխանցել predict()
-ին՝ տարածքի չափումներից ppm արժեքները կանխատեսելու համար: Հաջորդ տվյալների աղյուսակի իմ սյունակը կկոչվի area
, և ես չեմ կարող այն վերանվանել .[[peak_field]]
: Ես փորձում եմ նման բան և ստանում եմ սխալ.
a = c(1300.1, 1400.3, 1500.9)
df = data.frame(area = a)
df$std.ppm = predict(test$fit[[1]], newdata = df)
Սխալ
$<-.data.frame
-ում (*tmp*
, std.ppm, արժեքը = c(1
= -0.00299110569401364, . փոխարինումն ունի 8 տող, տվյալները՝ 3: Բացի այդ. Զգուշացնող հաղորդագրություն. «newdata»-ն ուներ 3 տող, բայց հայտնաբերված փոփոխականները ունեն 8 տող
Դա տեղի է ունենում, քանի որ predict()
-ը տարածքը ճանաչելու փոխարեն փնտրում է .[[peak_field]]
անունով սյունակ և կանխատեսում է արժեքներ սկզբնական մուտքագրված lm տվյալների համար՝ այն տվյալների փոխարեն, որոնք ես ուզում եմ, որ այն կանխատեսի:
Այսպիսով, ես հիմնականում լուծում եմ փնտրում այս խնդիրը հաղթահարելու համար: Լավագույն լուծումը թույլ կտա ինձ նշել գործակիցների անունները, երբ ես ի սկզբանե ստեղծում եմ lm օբյեկտները առաջին ֆունկցիայի մեջ, բայց ես լավ կլինեմ մի բանի հետ, որը թույլ է տալիս ինձ նշել, թե որ սյունակն օգտագործել predict()-ում: