在使用自定义函数循环数据框中的组时遇到一些麻烦.
以下是一些示例数据:
set.seed(42)
tm <- as.numeric(c("1", "2", "3", "3", "2", "1", "2", "3", "1", "1"))
d <- as.numeric(sample(0:2, size = 10, replace = TRUE))
t <- as.numeric(sample(0:2, size = 10, replace = TRUE))
h <- as.numeric(sample(0:2, size = 10, replace = TRUE))
df <- as.data.frame(cbind(tm, d, t, h))
df$p <- rowSums(df[2:4])
Run Code Online (Sandbox Code Playgroud)
我创建了一个自定义函数来计算值w:
calc <- function(x) {
data <- x
w <- (1.27*sum(data$d) + 1.62*sum(data$t) + 2.10*sum(data$h)) / sum(data$p)
w
}
Run Code Online (Sandbox Code Playgroud)
当我在整个数据集上运行该函数时,我得到以下答案:
calc(df)
[1]1.664474
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想返回按tm分组的结果,例如:
tm w
1 result of calc …Run Code Online (Sandbox Code Playgroud) 我正在处理我的第一个闪亮的应用程序,并且遇到了一个问题,即用于渲染我的数据表的数据没有被shinyapps.io接收.
该应用程序在我的控制台中运行良好,但是当我部署它时,应用程序在浏览器中打开并显示错误:找不到对象'Pitchers',其中'Pitchers'是我的数据对象之一.
我找到了一个建议说要将数据放在应用程序文件夹中的文件夹中,但仍然无法正常工作.
这是我当前的服务器.R代码:
shinyServer(function(input, output) {
Pitchers <- read.csv("data/Pitchers_Edge.csv", header=TRUE, check.names = FALSE)
Batters <- read.csv("data/Batters_Edge.csv", header=TRUE, check.names = FALSE)
output$table1 <- renderDataTable({
if (input$Year != "All"){
Pitchers <- Pitchers[Pitchers$Year == input$Year,]
}
Pitchers
})
output$table2 <- renderDataTable({
if (input$Year != "All"){
Batters <- Batters[Batters$Year == input$Year,]
}
Batters
})
})
Run Code Online (Sandbox Code Playgroud)
这是ui.R代码:
shinyUI(fluidPage(
titlePanel('Edge%: 2010-Present'),
fluidRow(
column(12,
p("Provides current and historical data on the percentage of pitches thrown to different parts of the strike zone by pitchers …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个简单的函数r,它将搜索.GlobalEnv名称中具有特定模式的对象,然后获取该列表并将元素绑定到数据框中。
单独运行时,这按预期工作:
# create sample data
df1_pattern_to_find <- data.frame(a = 1, b = 2)
df2_pattern_to_find <- data.frame(a = 3, b = 4)
# use mget to generate a list of objects
list_of_objects <- mget(ls(pattern="_pattern_to_find"))
# bind the elements together into a data frame
do.call("rbind", list_of_objects)
a b
df1_pattern_to_find 1 2
df2_pattern_to_find 3 4
Run Code Online (Sandbox Code Playgroud)
但是,当我将上述内容包装在一个函数中时,它返回NULL:
gather_function <- function() {
list_of_objects <- mget(ls(pattern="_pattern_to_find"))
df <- do.call("rbind", list_of_objects)
df
}
gather_function()
NULL
Run Code Online (Sandbox Code Playgroud)
我试过envir在mgetto内明确设置 …
就像一群人一样,我无法让rJava加载到RStudio中 - 同样的问题也会在直接使用R GUI时重现.
这是错误:
> require(rJava)
Loading required package: rJava
Error: package or namespace load failed for ‘rJava’:
.onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
我尝试了很多方面,包括从命令行重新配置:
sudo R CMD javareconf -n
Java interpreter : /usr/bin/java
Java version : 1.8.0_144
Java home path : /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre
Java compiler : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java …Run Code Online (Sandbox Code Playgroud)