Ich habe 10 verschachtelte Listen in Listen mit zwei Funktionen (unten) produziert - produziert von Dummy-Daten mit der Bezeichnung normalised_scores
. Jede verschachtelte Liste enthält zwei leere Spalten mit den Namen und Actual
(Code unten). Ich möchte diese leeren Spalten durch NAs ersetzen. Ich habe versucht, dies mit einer Funktion zu erreichen (Shuffle100
), aber error messages (below)
bekommen. Nachdem ich lange online geschaut habe, kann ich keine effiziente Methode finden, abgesehen von langatmigem Code (unten). Wenn jemand helfen kann, dann danke.Ersetzen Sie leere Spalten mit NA's in verschachtelten Listen innerhalb von Listen
Dummy-Daten
Family=rep(c("G8", "V4"), each=40)
x <- matrix(rnorm(960), ncol=12)
normalised_scores <- cbind(Family, x)
colnames(my_data)<-c("Family",
"Swimming",
"Not.Swimming",
"Running",
"Not.Running",
"Fighting",
"Not.Fighting",
"Resting",
"Not.Resting",
"Hunting",
"Not.Hunting",
"Grooming",
"Not.Grooming")
Ich schrieb diese Funktion unter diesen 10 verschachtelten Listen von Klassifikationsbaum-Modellen mit rpart
und caret
Paketen zu erzeugen. Ich habe versucht, zwei Spalten (und Actual
) mit NA's
gefüllt mit dieser Funktion, aber ohne Erfolg.
library(caret)
library(e1071)
library(rpart)
shuffle100 <-lapply(seq(10), function(n){ #Select the production of 10 dataframes
subset <- normalised_scores[sample(nrow(normalised_scores), 80),] #Shuffle rows
subset_idx <- sample(1:nrow(subset), replace = FALSE)
subset <- subset[subset_idx, ] #training subset
subset1<-subset[-subset_idx, ] #test subset
subset_resampled_idx <- createDataPartition(subset_idx, times = 1, p = 0.7, list = FALSE) #70 % training set
subset_resampled <- subset[subset_resampled_idx, ]
ct_mod<-rpart(Family~., data=subset_resampled, method="class", control=rpart.control(cp=0.005)) #10 ct
ct_pred<-predict(ct_mod, newdata=subset[, 2:13])
ct_dataframe=as.data.frame(ct_pred) #create new data frame
ct_dataframe$Predicted=NA
ct_dataframe$Actual=NA
})
Produce zwei leere Spalten vorhergesagte und tatsächliche genannt
my_list <- lapply(shuffle100, function(df){#Create two new columns Predicted and Actual
if (nrow(df) > 0)
cbind(df, Predicted = c(""), Actual = c(""))
else
cbind(df, Predicted = character(), Actual = c(""))
})
Fehlermeldungen der Funktion Shuffle100
und viel von den gleichen (Listen 1-10):
[[1]]
[1] NA
[[2]]
[1] NA
[[3]]
[1] NA
Gibt es ein effizienterer Weg dies zu tun?
#Insert NA's
my_list[[1]]$Predicted<-NA
my_list[[1]]$Actual<-NA
my_list[[2]]$Predicted<-NA
my_list[[2]]$Actual<-NA
my_list[[3]]$Predicted<-NA
my_list[[3]]$Actual<-NA
my_list[[4]]$Predicted<-NA
my_list[[4]]$Actual<-NA
my_list[[5]]$Predicted<-NA
my_list[[5]]$Actual<-NA
my_list[[6]]$Predicted<-NA
my_list[[6]]$Actual<-NA
my_list[[7]]$Predicted<-NA
my_list[[7]]$Actual<-NA
my_list[[8]]$Predicted<-NA
my_list[[8]]$Actual<-NA
my_list[[9]]$Predicted<-NA
my_list[[9]]$Actual<-NA
my_list[[10]]$Predicted<-NA
my_list[[10]]$Actual<-NA
Thank you so much. Ich habe das den ganzen Tag versucht. Hab eine großartige Woche. –
Wofür wird 'dplyr' verwendet? Kannst du 'transform' nicht von Base R anstatt' muate' benutzen? –
sicher! Ich arbeite gerade mit dplyr so sehr, dass ich manchmal die Basisfunktionen vergesse .. – denise