小编Dr.*_*ike的帖子

为什么rJava不能使用OpenJDK 7在Ubuntu 14.04上运行?

嗨,我有来自cran的rJava包的问题.

我安装了

sudo apt-get install openjdk-7-jdk
sudo apt-get install r-cran-rjava
Run Code Online (Sandbox Code Playgroud)

跑了

sudo R CMD javareconf
# Java interpreter : /usr/bin/java
# Java version     : 1.7.0_55
# Java home path   : /usr/lib/jvm/java-7-openjdk-amd64/jre
# Java compiler    : /usr/bin/javac
# Java headers gen.: /usr/bin/javah
# Java archive tool: /usr/bin/jar
Run Code Online (Sandbox Code Playgroud)

然后我尝试运行R并加载rJava并得到以下错误:

R
> library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/usr/lib/R/site-library/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such …
Run Code Online (Sandbox Code Playgroud)

java openjdk r rjava ubuntu-14.04

16
推荐指数
4
解决办法
2万
查看次数

将多个sliderInput限制为闪亮,总计为100

我整天都在苦苦挣扎,我有点解决它(可怕的黑客).然而,经验不平滑并且显示副作用.

我想要的是三个滑块,其范围为0到100约束,使得它们的总和应该总是100.

这是它的样子截图截图

这是server.R闪亮的代码.

library(shiny)

oldState<-NULL
newState<-NULL

getState<-function(input) c(input$slider1, input$slider2, input$slider3)

# Define server logic required
shinyServer(function(input, output, session) {

  observe({
    newState<<-getState(input)
    i<-which(oldState-newState != 0)[1]
    if(!is.na(i)){
      rem <- 100-newState[i]
      a<-sum(newState[-i])
      if(a==0) newState[-i]<<-rem/length(newState[-i])
      else newState[-i]<<-rem*(newState[-i]/a)
      for(j in 1:length(newState))
        if(j!=i)
          updateSliderInput(session, paste0("slider", j), value=newState[j])
    }
    oldState<<-newState
  })

  output$restable <- renderTable({
    myvals<-getState(input)
    myvals<-c(myvals, sum(myvals))
    data.frame(Names=c("Slider 1", "Slider 2", "Slider 3", "Sum"),
               Values=myvals)
  })
})
Run Code Online (Sandbox Code Playgroud)

这是ui.R闪亮的代码

library(shiny)

# Define UI for application
shinyUI(pageWithSidebar(

  # Application title
  headerPanel("Sliders should sum to 100!"),

  # Sidebar with …
Run Code Online (Sandbox Code Playgroud)

r shiny

14
推荐指数
1
解决办法
2922
查看次数

如何使用apply对R中data.frame中的特定列进行分解

我有一个名为mydata的data.frame和一个包含data.frame中列的索引的矢量id,我想将其转换为因子.现在,以下代码解决了这个问题

for(i in ids) mydata[, i]<-as.factor(mydata[, i])
Run Code Online (Sandbox Code Playgroud)

现在我想通过使用apply而不是显式的for循环来清理这段代码.

mydata[, ids]<-apply(mydata[, ids], 2, as.factor)
Run Code Online (Sandbox Code Playgroud)

但是,最后一个语句给了我一个data.frame,其中类型是字符而不是因素.我没有看到这两行代码之间的区别.为什么他们不会产生相同的结果?

亲切的问候,迈克尔

r apply dataframe

7
推荐指数
2
解决办法
5674
查看次数

如何使用ggplot2从qcc包重现pareto.chart图?

我一直在使用R中的qcc包中的pareto.chart函数,我真的很喜欢它.现在我想将所有图形移植到ggplot2包中.但是,尽管有很好的文档,但我对ggplot2的了解非常有限,所以我无法弄清楚所有的细节.基本上我想要一个看起来像这样的情节

由qcc包中的pareto.chart函数生成的简单帕累托图

但改为使用ggplot2包.制作情节的代码如下:

    library(qcc)
    defect <- c(80, 27, 66, 94, 33)
    names(defect) <- c("price code", "schedule date", "supplier code", "contact num.", "part num.")
    pareto.chart(defect, ylab = "Error frequency", col=heat.colors(length(defect)))
Run Code Online (Sandbox Code Playgroud)

有人有解决方案吗?之前已经讨论过帕累托图表,但结果与我想要的结果并不相似.

plot r ggplot2 qcc

6
推荐指数
1
解决办法
9048
查看次数

如何在Strawberry Perl中使用unicode读取一个带有长文件名的文件而不使用Win32 :: Unicode :: File?

我在Windows XP计算机上有一个位于目录中的文件,其中包含丹麦语字符.我使用Strawberry perl并希望阅读此文件.以下代码工作正常:

    use Win32::Unicode::File;
    # Some code left out....
    $fname = $mw -> getOpenFile(-filetypes=>$types);
    my $fh = Win32::Unicode::File->new;
    $fh->open('<', $fname);
Run Code Online (Sandbox Code Playgroud)

getOpenFile例程来自Tk.现在由于某种原因,Win32 :: Unicode :: File有一些我不能忍受的不幸副作用(它吃了我的记忆,看到"内存不足"与简单的Win32 :: Unicode :: File readline循环和Strawberry Perl).现在如果我尝试在没有Win32 :: Unicode :: File接口的情况下打开文件,我会找不到找到的文件.原因是路径被错误地解释了.我已经尝试根据Perl转换路径:在Windows上管理路径编码因某些原因无效.我该怎么解决这个问题?我尝试过以下方法:

    use Encode;
    # Some code left out....
    $fname = $mw -> getOpenFile(-filetypes=>$types);
    my $fh;
    open($fh, '<', encode("utf8",$fname,Encode::FB_CROAK));
Run Code Online (Sandbox Code Playgroud)

它不起作用.有任何想法吗?

如果我不清楚,请原谅我.

亲切的问候,迈克尔

unicode perl windows-xp character-encoding strawberry-perl

5
推荐指数
1
解决办法
1325
查看次数

如何使用ggplot2包创建此图表.R中的相关图?

我非常希望使用纯ggplot2方法重新创建此图,因为我想使用该包解决所有绘图.

我希望使用ggplot2包重新创建的图

下面给出了生成这个特定图的代码.

library(PerformanceAnalytics)
library(quantmod)
getSymbols(c('SPY','LQD','GLD'))
Data <- cbind(Cl(SPY),Cl(LQD),Cl(GLD))
Year <- as.factor(format(index(Data),'%Y'))
chart.Correlation(Data,bg=seq(1:5)[Year],pch=21)
par(xpd=TRUE)
legend(0, 1, as.vector(unique(Year)), fill=seq(1:5))
Run Code Online (Sandbox Code Playgroud)

您可以在本网站上阅读更多相关信息.

我创建了一个小数据集来玩.以下代码定义了data.frame并将其融合为ggplot通常喜欢的格式.

library(ggplot2)
library(reshape2)
mydf<-structure(list(SPY = c(141.37, 141.67, 140.54, 141.19, 141.07, 
                   141.54, 142.16, 143.24, 142.96, 143.02, 142.54, 142.82, 142.38, 
                   142.8, 143.95, 142.26, 142.13, 142.05, 142.79, 143.75, 144.86, 
                   141.31, 141.19, 138.91, 140.37, 141.29, 140.15, 141.28, 138.17, 
                   136.98, 133.43, 132.06, 130.72, 133.86, 134.99, 133.04, 135.24, 
                   135.91, 134.91, 137.37, 92.96, 92.85, 93.47, 90.67, 91.04, 89.09, 
                   86.95, 87.11, 84.37, 84.4, 85.06, 80.57, 84.05, 82.75, 83.11, …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2 correlation

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

为什么摘要和类方法在R中的data.frame中的类型上不一致?

这是设置:

mydf<-structure(list(weight = c(1.34288799762726, 1.18884372711182, 
1.15979790687561, 1.34288799762726, 1.08285343647003, 1.07932889461517, 
1.28913342952728, 1.211909532547, 1.03438591957092, 1.22719633579254
), RespID = c(3182, 3183, 3184, 3185, 3186, 3187, 3188, 3189, 
3190, 3191), b1 = structure(c(1L, 2L, 1L, 1L, 2L, 2L, 1L, 2L, 
2L, 2L), .Label = c("Mand", "Kvinde"), class = "factor")), .Names = c("weight", 
"RespID", "b1"), row.names = c(NA, 10L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

现在,对摘要的调用将生成以下输出:

summary(mydf)
#     weight          RespID          b1   
# Min.   :1.034   Min.   :3182   Mand  :4  
# 1st Qu.:1.102   1st Qu.:3184   Kvinde:6  
# Median :1.200   Median …
Run Code Online (Sandbox Code Playgroud)

r dataframe

2
推荐指数
1
解决办法
144
查看次数

如何以较简洁的方式将JSON格式的请求从R中的URL中的GET JSON数据发布到data.frame中?

我在R中编写了以下代码以开始使用数据请求API.这是一个普通的Web服务JSON API.

library(RJSONIO)
library(RCurl)
library(httr)

r <- POST("http://api.scb.se/OV0104/v1/doris/sv/ssd/START/PR/PR0101/PR0101A/KPIFastM2", 
          body = '{ "query": [], "response": { "format": "json" } }')
stop_for_status(r)
a<-content(r, "text", "application/json", encoding="UTF-8")
cat(a, file = "test.json")
x<-fromJSON(file("test.json", "r"))
mydf<-do.call(rbind, lapply(x$data, data.frame))
colnames(mydf)<-c("YearMonth", "CPI")
Run Code Online (Sandbox Code Playgroud)

基本上它使用httr初始化URL的get reuest,然后通过fromJSON将生成的JSON数据转换为R结构.JSON请求如下所示:

{ "query": [], "response": { "format": "json" } }
Run Code Online (Sandbox Code Playgroud)

事实上,我的代码将数据输入到我想要的数据框架中,但是它非常冗长,我拒绝相信所有这些线条都是实现所需结果所必需的.想要的结果当然是mydf data.frame.

所以我的问题是:从Web服务获取数据到data.frame的最短和最正确的方法是什么?

干杯,迈克尔

api json web-services r rcurl

2
推荐指数
1
解决办法
7696
查看次数

在我的软件包中使用ddply时,如何摆脱R CMD检查生成的NOTE?

我有一个类似但不同的问题,当我的ggplot2语法合理时,如何处理R CMD检查"没有可见的全局变量绑定"注释?.

在那种情况下,通过使用aes_string而不是aes,一切都顺利进行.然而,这与plyr afaik无法实现.

例如,当我通过ddply引用数据框中的列名时会出现问题.

ddply(mydf, .(VarA, VarB, VarC, VarD), summarize, sum = sum(VarE))
#
# MyPackage: no visible binding for
#   global variable ‘VarA’
Run Code Online (Sandbox Code Playgroud)

这段代码是完全有效和理智的,即使我理解使用NOTE,它们仍然会混淆输出窗口中的其他消息,使得包开发变得困难,并且实际上强制开发人员忽略NOTE.

摆脱这些笔记的正确方法是什么?或者替代方案是什么是以R CMD检查接受而不给出NOTE的方式编写代码的正确方法?

最好,迈克尔

warnings r plyr package-development r-package

2
推荐指数
1
解决办法
135
查看次数

合并 2 个数据帧,丢弃不匹配的行

我有两个数据框——一个很大(超过 200 万行),一个较小(大约 300,000 行)。较小的数据帧是较大数据帧的子集。唯一的区别是较大的有一个额外的属性,我需要添加到较小的。

具体来说,大数据框的属性是(日期、时间、地址、标志),小数据框的属性是(日期、时间、地址)。我需要以某种方式将正确的相应 Flag 值放入每行的较小数据框中。“合并”数据帧的最终大小应该与我较小的相同,从大数据帧中丢弃未使用的行。

实现这一目标的最佳方法是什么?

更新:我使用以下内容测试了合并功能:

new<-merge(data12, data2, by.x = c("Date", "Time", "Address"), 
           by.y=c("Date", "Time", "Address"))
Run Code Online (Sandbox Code Playgroud)

new<-merge(data12, data2, by = c("Date", "Time", "Address"))
Run Code Online (Sandbox Code Playgroud)

两者都返回一个空数据框(新),具有正确数量的属性以及以下警告消息:

Warning message:In `[<-.factor`(`*tmp*`, ri, value = c(15640, 15843, 15843, 15161,  : invalid factor level, NAs generated
Run Code Online (Sandbox Code Playgroud)

merge r dataframe

0
推荐指数
1
解决办法
2646
查看次数