ich versuche, ein Problem aus einer Frage zu lösen, ich vorher looping inside list in rVerwendung Name Datenrahmen auf einer Liste von Datenrahmen
geschrieben habe, ist es eine Möglichkeit, den Namen eines Datenrahmen zu erhalten, die auf einer Liste von Datenrahmen ist? Ich habe eine Reihe von Datenrahmen aufgelistet und zu jedem Datenrahmen, den ich anwenden möchte myfunction
. Aber ich weiß nicht, wie man den Namen jedes Datenrahmens erhält, um ihn auf nameofprocesseddf
von myfunction
zu verwenden.
Hier ist die Art, wie ich die Liste meiner Datenframes und den Code, den ich bis jetzt bekommen habe. Irgendwelche Vorschläge, wie ich das schaffen kann?
library(missForest)
library(dplyr)
myfunction <- function (originaldf, proceseddf, nonproceseddf, nameofprocesseddf=character){
NRMSE <- nrmse(proceseddf, nonproceseddf, originaldf)
comment(nameofprocesseddf) <- nameofprocesseddf
results <- as.data.frame(list(comment(nameofprocesseddf), NRMSE))
names(results) <- c("Dataset", "NRMSE")
return(results)
}
a <- data.frame(value = rnorm(100), cat = c(rep(1,50), rep(2,50)))
da1 <- data.frame(value = rnorm(100,4), cat2 = c(rep(2,50), rep(3,50)))
dataframes <- dir(pattern = ".txt")
list_dataframes <- llply(dataframes, read.table, header = T, dec=".", sep=",")
n <- length(dataframes)
# Here is where I do not know how to get the name of the `i` dataframe
for (i in 1:n){
modified_list <- llply(list_dataframes, myfunction, originaldf = a, nonproceseddf = da1, proceseddf = list_dataframes[i], nameof processeddf= names(list_dataframes[i]))
write.table(file = sprintf("myfile/%s_NRMSE20%02d.txt", dataframes[i]), modified_list[[i]], row.names = F, sep=",")
}
Versuch '' 'Namen (list_dataframes) [i] '' '- aber wo wird der Name vergeben? –
das ist genau mein Problem, ich weiß nicht, wie man den Namen jedes in der Liste enthaltenen Datenrahmens zuweist. Irgendeine Idee, wie ich es zuordnen kann? – mina
'llply' kommt von plyr, nicht dplyr. Ich denke, Sie werden feststellen, dass Ihre Objektnamen mehr Probleme haben, als sie wert sind. (Ich beziehe mich auf 'nonproceseddf', das einen Rechtschreibfehler enthält, et al. Nicht den Inhalt der Frage. Kürzere Namen sind im Allgemeinen besser.) – Frank