小编Bil*_*tti的帖子

按组在R中的数据框上运行自定义函数

在使用自定义函数循环数据框中的组时遇到一些麻烦.

以下是一些示例数据:

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)

aggregate r function dplyr

9
推荐指数
3
解决办法
1万
查看次数

部署闪亮的应用程序时找不到数据对象

我正在处理我的第一个闪亮的应用程序,并且遇到了一个问题,即用于渲染我的数据表的数据没有被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 shiny

8
推荐指数
1
解决办法
1万
查看次数

在 R 中的函数中使用 mget

我正在尝试编写一个简单的函数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)

我试过envirmgetto内明确设置 …

r

8
推荐指数
1
解决办法
3719
查看次数

rJava加载错误

就像一群人一样,我无法让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)

java r rjava rstudio

3
推荐指数
1
解决办法
2499
查看次数

标签 统计

r ×4

aggregate ×1

dplyr ×1

function ×1

java ×1

rjava ×1

rstudio ×1

shiny ×1