我有一个带条件面板的应用程序,它依赖于一系列用户选择.提供一个可重复的示例太复杂了,但我会尝试提供一个简化版本来获取我要求的内容,并且还包括实际应用程序中的相关部分.
在我的应用程序中,如果用户加载Excel文件然后从单选按钮中选择另一个条件,则会出现某个条件面板.如果加载了Excel文件并进行了适当的选择,则给定的条件面板将按预期显示.如果加载了csv文件,则不会显示条件面板,但是应该有一个红色消息object sheetrID not found.错误(实际上是Shiny中的一个警告)纯粹是装饰性的,但我想了解为什么会发生这种情况.
作为一种方法,在这个简单的应用程序中,在条件面板上获取类似错误消息的方法是:
library(shiny)
ui <- fluidPage(
column(3,
h3("Add new data"),
uiOutput("dummyslider")
), # close column
column(9,
h3("Matching"),
uiOutput("condition_select")
) # close column
) # close fluidPage
server <- function(input, output, session) {
output$dummyslider <- renderUI({
sliderInput(inputId = "num",
label = "Choose a number",
value = 25, min = 1, max = 100)
})
output$condition_select <- shiny::renderUI({
shiny::conditionalPanel(
condition="input.num > 40",
shiny::sliderInput(
inputId="slider2",
label="test label",
min=0,
max=1,
value=0.1,
step=0.01
)
)
})
} # close …Run Code Online (Sandbox Code Playgroud) 我正在开发一个自定义 R 包(它是私有的,不在任何地方托管)。在这个包中,我有一个函数,它采用 xgboost、RandomForest(来自 ranger 函数)和 glmnet 模型,并使用它们来预测新数据集。
每次预测时,我都会使用相同的广义预测函数。如果我没有为函数命名空间,R 就不知道使用哪个库来进行预测。
我得到的错误是:
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "c('lognet', 'glmnet')"
Run Code Online (Sandbox Code Playgroud)
如果我手动加载函数,它可以工作,但我知道在 R 库中手动加载包是一个禁忌。
我尝试使用 glmnet::glmnet.predict 等,但这也给了我错误。命名这些预测函数以避免手动加载库的正确方法是什么?
我有一个Shiny应用程序渲染数据表,我希望在其中包含2个条件格式化功能
我问了一个关于如何在这篇SO帖子中加入逗号的问题.我在下面的脚本中删除了rowcallback参数,逗号正确呈现.同样,如果我注释掉dom和formatCurrency参数,突出显示条件fomatting也会正确呈现.
js_cont_var_lookup <- reactive({
JS(
'function(nRow, aData) {
for (i=2; i < 3; i++) {
if (parseFloat(aData[i]) > aData[1]*(1.03)) {
$("td:eq(" + i + ")", nRow).css("background-color", "aqua");
}
}
for (i=2; i < 3; i++) {
if (parseFloat(aData[i]) < aData[1]*(.7)) {
$("td:eq(" + i + ")", nRow).css("background-color", "red");
}
}
}'
) # close JS
})
shinyApp(
ui = fluidPage(
DTOutput("dummy_data_table")
),
server = function(input, output) {
output$dummy_data_table <- DT::renderDataTable(
data.frame(A=c(100000, 200000, …Run Code Online (Sandbox Code Playgroud) 我正在 Python 中运行加权 t 测试,但看到了不同的结果。看来问题是自由度计算。想了解为什么我看到不同的输出。
这是一些示例代码。
在 R 中:
library(weights)
x <- c(373,398,245,272,238,241,134,410,158,125,198,252,577,272,208,260)
y <- c(411,471,320,364,311,390,163,424,228,144,246,371,680,384,279,303)
weightsa = c(rep(1,8), rep(2,8))
weightsb = c(rep(2,8), rep(1,8))
wtd.t.test(x = x,
y = y,
weight = weightsa,
weighty = weightsb, samedata=F)
$test [1] "Two Sample Weighted T-Test (Welch)"
$coefficients
t.value df p.value
-1.88907197 29.93637837 0.06860382
$additional Difference Mean.x Mean.y Std. Err -80.50000
267.12500 347.62500 42.61352
Run Code Online (Sandbox Code Playgroud)
在 Python 中:
import numpy as np
from statsmodels.stats.weightstats import ttest_ind
x = np.asarray([373,398,245,272,238,241,134,410,158,125,198,252,577,272,208,260])
y = np.asarray([411,471,320,364,311,390,163,424,228,144,246,371,680,384,279,303])
weightsa = …Run Code Online (Sandbox Code Playgroud) 我想在最后一步更改数据的列名,然后在Shiny应用程序中输出它.显示名称很长,我不想在操作数据表时更改它们.在我的实际数据集中,数据表的格式更改比下面的更多.
这是一个虚拟数据集:
library(DT)
test.df <- data.frame(a = runif(10), b = 21:20, c = 31:30, d = 31:40)
test.dt <- datatable(test.df) %>% formatPercentage('a', 0) %>% formatCurrency('c', '$')
Run Code Online (Sandbox Code Playgroud)
现在,我如何将列名更改为c('Col1','Col2','Col3','Col4')?同样,我希望这是我用renderDataTable函数输出数据表之前的最后一步.
如果有一种方法可以创建列别名而不是更改实际的列名,那么这也可以.
我想使用 dplyr 来选择与字符串向量匹配的某些列。
one <- seq(1:10)
two <- rnorm(10)
three <- runif(10, 1, 2)
four <- -10:-1
df <- data.frame(one, two, three, four)
vars <- c('on', 'thr')
Run Code Online (Sandbox Code Playgroud)
我只想选择 df 中标题以“on”或“thr”开头的列:
dplyr::select_(df, starts_with(vars))
Run Code Online (Sandbox Code Playgroud)
但是,上述方法不起作用。
我想在stringdist函数中使用Jaccard相似度来确定单词袋的相似度。据我所知,使用Jaccard仅可匹配字符串中的字母。
c <- c('cat', 'dog', 'person')
d <- c('cat', 'dog', 'ufo')
stringdist(c, d, method='jaccard', q=2)
[1] 0 0 1
Run Code Online (Sandbox Code Playgroud)
因此,我们在这里看到它计算了“ cat”和“ cat”,“ dog”和“ dog”以及“ person”和“ ufo”的相似性。
我还尝试将单词转换为1个长文本字符串。以下方法满足了我的需要,但仍在计算1-(共享2克数/唯一2克总数):
f <- 'cat dog person'
g <- 'cat dog ufo'
stringdist(f, g, method='jaccard', q=2)
[1] 0.5625
Run Code Online (Sandbox Code Playgroud)
如何通过单词计算相似度?
我正在尝试使用 dplyr 根据动态变量进行过滤。
我发现要使过滤器正常工作,我需要将变量名称括在括号中。但是,如果我将其编程为一个函数,它就无法正常工作。
df_ex <- data.frame(a = 1:10, b = 11:20)
param <- quo(a)
# returns df_ex with column a, only, as expected
df_ex %>%
dplyr::select(!!param)
# returns expected df
df_ex %>%
dplyr::filter((!!param)==5)
# Now for the function
testfun <- function(test_df, filt_var){
filt_var_mod <- quo(filt_var)
test_df %>%
dplyr::filter((!!filt_var_mod)==5)
}
# returns empty df, not as expected
testfun(df_ex, "a")
Run Code Online (Sandbox Code Playgroud)
我想学习为自己找到这些关于 dplyr 的问题类型的答案,所以请随时向我推荐编程小插图的相关部分
我想用purrr的短手配方规范和多行公式.
例如,我想重新调整以下公式:
purrr::imap_chr(sample(10), ~ paste0(.y, ": ", .x))
Run Code Online (Sandbox Code Playgroud)
而是执行以下操作:
purrr::imap_chr(sample(10), ~
b <- 10
paste0(.y, ": ", .x + b))
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这样做时收到错误:
错误:意外符号:"b < - 10 paste0"
我一直在修改RGL包来弄清楚如何从R中的等式绘制一个平面,但无济于事.
例如,我想想象下面的平面:
1x + 0y + 0z = 2
0x + 1y + 0z = 3
0x + 0y + 1z = 4
Run Code Online (Sandbox Code Playgroud)
似乎rgl的planes3d函数只为现有的3D绘图添加了一个平面.
跑步git ls-remote和有git ls-remote origin什么区别?它似乎git ls-remote输出原始存储库的每个分支和标记的SHA1 ID.由于原始repo默认标题为origin,因此看起来这两个命令产生相同的输出.它是否正确?