我有一個可能很愚蠢的問題,但我只是想創建我的第一個 R 閃亮應用程式。我正在考慮撰寫一個代碼,其中將讀取 2 個單獨的 csv 檔案,然后將其組合成一個資料幀。在組合它們之前,我需要在每個資料框中添加幾列,如代碼所示。所以我想我可以在 ui 和服務器之外操作資料,然后創建應用程式,允許用戶選擇他們想要在每個軸上繪制的內容。閃亮部分之外的代碼的第一部分作業正常,我得到了所需的組合資料框。但是,當我運行代碼時,似乎沒有創建資料框,因此我最終得到了一個空介面。
任何幫助將不勝感激!附上我有一張 csv 檔案中列的圖片,第二個 csv 檔案類似。

uj5u.com熱心網友回復:
我認為您遇到的問題與框架無關,而是與ggplot2. 在一般情況下,查找ggplot2和quasiquotation,你會發現自己在NSE(非標評估)機制,你以為你不會需要(或者從來不知道你會需要,要誠實)的泥潭。
我可以用這個簡單的非閃亮示例復制一些非作業性。
library(ggplot2)
input <- list(x = "mpg", y = "disp")
這會產生錯誤的圖表,只有一個點:
ggplot(mtcars, aes(x=input$x, y=input$y)) geom_point()
但是如果你切換到這個,它應該可以作業:
ggplot(mtcars, aes(x=!!sym(input$x), y=!!sym(input$y))) geom_point()
也就是說,使用!!sym(input$x)而不是僅使用input$x(以及您將放置在aes(...).
如果你很好奇,舊的(軟棄用)解決方案是使用aes_string,它仍然有效(但我不知道能持續多久):
ggplot(mtcars, aes_string(x=input$x, y=input$y)) geom_point()
邊注:
我認為將資料讀取為更直接(并且代碼高爾夫更簡單):
twofiles <- setNames(nm = c("shop1.csv","shop2.csv")) shop_list <- lapply(twofiles, read.csv, header=TRUE, sep=",") finaldata <- transform( dplyr::bind_rows(shop_list, .id = "datano"), ratio1 = price_apples/price_pears, ratio2 = price_apples/price_cherries, datano = factor(datano) )雖然因為你已經在所有的拉
tidyverse,你不妨切換到dplyr-方法......不就是在這里給你買了很多東西。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/406624.html
標籤:
