zu implementieren Ich versuche, meinen Benutzern die Möglichkeit zu geben, die Art der Analyse in einer App zu variieren, und so muss ich die verwendete Funktion variieren ... Das ist nicht so geradlinig wie es klingt ... Es gibt verschiedene Layoutalgorithmen im r-Paket von igigraph, die jeweils in einem Befehl wie "layout.fruchterman.reingold", "layout.drl", "layout_with_kk" usw. implementiert sind.Wie man eine Funktion variiert, die verwendet wird, um verschiedene Arten der Analyse in glänzenden
ich möchte irgendwie meine Benutzer in der Lage sein den Befehl zu implementieren, was immer Algorithmus sie im folgenden Code wie wählen zu lassen:
shinyUI(plotOutput("graph"))
serveractual <- function(input, output) {
output$graph<-renderPlot({
adj_mat<-adjacency(adj)
g <- simplify(graph.adjacency(adj_mat, mode='directed', weighted=TRUE, add.colnames=NA))
coords_fr = layout.fruchterman.reingold(g, weights=E(g)$weight)
plot.igraph(g, layout=coords_fr, vertex.label=NA)
})
}
shinyApp(uiactual, server actual)
Zuerst habe ich versucht:
selectInput(inputId = "adj", "choose graph type", choices=c("layout.fruchterman.reingold", "layout.drl", "layout_with_kk")),
coords_fr = input$adj(g, weights=E(g)$weight)
aber natürlich Parametervariation nicht so funktioniert.
Also wie implementiere ich "selectInput", um die Funktion für die Analyse zu variieren? Irgendwelche Tipps?
PS. Sie können die „adj“ Objekt (Adjazenzmatrix) in Ihrer lokalen R-Umgebung, um die glänzende App mit dem folgenden Code definieren auszuführen:
set.seed(1)
# generate a couple clusters
nodes_per_cluster <- 30
n <- 10
nvals <- nodes_per_cluster * n
# cluster 1 (increasing)
cluster1 <- matrix(rep((1:n)/4, nodes_per_cluster) +
rnorm(nvals, sd=1),
nrow=nodes_per_cluster, byrow=TRUE)
# cluster 2 (decreasing)
cluster2 <- matrix(rep((n:1)/4, nodes_per_cluster) +
rnorm(nvals, sd=1),
nrow=nodes_per_cluster, byrow=TRUE)
# noise cluster
noise <- matrix(sample(1:2, nvals, replace=TRUE) +
rnorm(nvals, sd=1.5),
nrow=nodes_per_cluster, byrow=TRUE)
dat <- rbind(cluster1, cluster2, noise)
colnames(dat) <- paste0('n', 1:n)
rownames(dat) <- c(paste0('cluster1_', 1:nodes_per_cluster),
paste0('cluster2_', 1:nodes_per_cluster),
paste0('noise_', 1:nodes_per_cluster))
adj<-dat