小编bli*_*sse的帖子

如何在Shiny R App中为select.put获取从server.R到ui.R的选项向量

我的ui.R文件有一个像这样的selectInput:

selectInput("variable1", "Choose Option:", camps)
Run Code Online (Sandbox Code Playgroud)

其中camps被认为是一个选项矢量.此向量取决于在服务器脚本上运行的sql查询并返回阵营的ID:

server.R

df1 <- getCamps("date")
camps <- unique(df1$idCamps)
Run Code Online (Sandbox Code Playgroud)

当我运行App时,ui.R不知道"阵营"是什么,因为它只在server.R文件中创建.如何将server.R文件中创建的阵营向量传递给ui.R文件,以便它们现在可以在selectInput选择器中进行选择?

r shiny

31
推荐指数
1
解决办法
6901
查看次数

在Objective-C中延迟加载 - 我应该从getter中调用setter吗?

这是一个小细节,但每次我懒得加载一些东西我都会被它抓住.这两种方法都可以接受吗?要么更好吗?假设变量具有retain属性.

方法#1

(AnObject *)theObject{
    if (theObject == nil){
        theObject = [[AnObject createAnAutoreleasedObject] retain];
    }
    return theObject;
}
Run Code Online (Sandbox Code Playgroud)

方法#2

(AnObject *)theObject{
    if (theObject == nil){
        self.theObject = [AnObject createAnAutoreleasedObject];
    }
    return theObject;
}
Run Code Online (Sandbox Code Playgroud)

首先,我不确定是否可以访问访问者中的另一个访问者功能(但不知道为什么不这样做).但似乎设置类变量而不通过setter可能同样糟糕,如果setter执行某些特殊操作(或者如果属性更改为除了retain之外的内容并且未检查getter).

memory-management lazy-loading objective-c lazy-initialization

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

rdply和.id参数 - NULL不能像描述的那样工作

对于文档rdplyplyr包说,这对.id参数:

 .id: name of the index column. Pass ‘NULL’ to avoid creation of
      the index column. For compatibility, omit this argument or
      pass ‘NA’ to avoid converting the index column to a factor;
      in this case, ‘".n"’ is used as colum name..
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我传递NULL时,所描述的行为似乎不起作用.考虑:

>rdply(20, mean(runif(20)))
   .n           V1
1   1 0.4202275122
2   2 0.5140590765
3   3 0.4201277295
4   4 0.4082553896
...
Run Code Online (Sandbox Code Playgroud)

现在,我试图摆脱索引列:

> rdply(20, mean(runif(20)),.id=NULL)
Error in if (!is.na(.id)) names(labels) <- .id :
  argument is …
Run Code Online (Sandbox Code Playgroud)

r plyr

7
推荐指数
1
解决办法
264
查看次数

编写R包:需要一个我没有明确调用的包

我正在使用包中的spTransform函数的R sp包.问题是这个函数需要rgdal加载工作,否则我收到一条错误信息:

Error in eval(expr, envir, enclos) : load package rgdal for spTransform methods
Run Code Online (Sandbox Code Playgroud)

Imports在该DESCRIPTION文件中的陈述包括以下内容:

Imports: sp,
    rgdal
Run Code Online (Sandbox Code Playgroud)

但我仍然得到错误.但是,如果我library(rgdal)在使用包之前显式加载rgdal(使用),一切正常.我猜测当我的软件包加载时,rgdal没有附加,因为我的代码都没有通过explcitly ::等方式使用它.

所以我认为我的问题是:如何让我的包附加一个我没有明确使用的包?

r

7
推荐指数
1
解决办法
92
查看次数

在R中用writeOGR编写shapefile的问题

我在脚本中得到一个错误,它迭代目录中的一些文本文件,做一些数据操作并使用来自R中rgdal包的writeOGR写入ESRI shapefile.我在一定数量的文件后不断收到错误写入(似乎是大约43-44个单独的文件,或~14个完整的shapefile,因为每个shapefile创建了许多文件).

错误通常是这样的

GDAL Error 4: Unable to open ./test_8.shp or ./test_8.SHP
Run Code Online (Sandbox Code Playgroud)

此外,在脚本崩溃后,我得到一个错误

 cannot open file 'file_test.R': Too many open files
Run Code Online (Sandbox Code Playgroud)

当我尝试阅读或使用其他文件做任何事情时.

showConnections
Run Code Online (Sandbox Code Playgroud)

此时不显示任何打开的文件.

以下是一些可以重现问题的代码:

library(gstat)
library(rgdal)
data(meuse)

coordinates(meuse) = ~x + y

for (i in 1:50){
    writeOGR(meuse,'.',paste('test',i,sep="_"),driver="ESRI Shapefile")
}
Run Code Online (Sandbox Code Playgroud)

我在OSX上使用R 2.12.2.64位和32位版本都会发生错误.

r gdal

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

循环在包含NULL的向量

我想循环一个向量并将值作为参数发送到函数.我想发送的值之一是NULL.这就是我一直在尝试的

things <- c('M','F',NULL)
for (thing in things){
    doSomething(thing)
}
Run Code Online (Sandbox Code Playgroud)

但循环忽略NULL值.有什么建议?

r

5
推荐指数
2
解决办法
601
查看次数

dplyr :: rowwise,mutate和NA错误

我试图使用rowwisemutate具有能够返回一个NA值的函数,但我得到一个错误.考虑这个人为的例子(显然不是rowwise的情况,但说明了错误):

这有效:

library(dplyr)
data.frame(k=rnorm(10)) %>% mutate(l = ifelse(k > 0, 1, NA))

           k  l
1  -1.40223573 NA
2   1.47581873  1
3   0.35938746  1
4   0.87240448  1
5  -0.61991535 NA
6  -1.88152820 NA
7   0.25837350  1
8  -0.02250385 NA
9   0.92757943  1
10  0.49023792  1
Run Code Online (Sandbox Code Playgroud)

但是这给出了一个错误:

library(dplyr)
data.frame(k=rnorm(10)) %>% rowwise() %>% mutate(l = ifelse(k > 0, 1, NA))

Error: incompatible types, expecting a numeric vector
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

在R中传递一个缺少的参数

我正在R中编写一个函数,除其他外,它基于列名的向量子集数据帧.我试图利用默认行为,[.data.frame如果缺少'j'参数,将返回所有列.有没有办法通过我的包装函数传递一个缺少的参数?这是一个简单的例子:

fixDataFrames <- function(listOfDataFrames, columns){
    lapply(listOfDataFrames, function(x) x[,columns])
}
Run Code Online (Sandbox Code Playgroud)

如果我没有为列指定值,则在将其传递给[函数时会出现错误:"columns参数缺失,没有默认值".

r

4
推荐指数
1
解决办法
4823
查看次数

将二进制矩阵转换为组

这是一个看似简单的问题,但我想不出答案。这是最简单的情况:

考虑以下矩阵:

friendMatrix  <- matrix(c(1,1,0,0,0,     
                          1,1,1,0,0,
                          0,1,1,0,0,
                          0,0,0,1,1,
                          0,0,0,1,1),nrow=5)
Run Code Online (Sandbox Code Playgroud)

看起来像这样

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    0    0    0 
[2,]    1    1    1    0    0
[3,]    0    1    1    0    0
[4,]    0    0    0    1    1
[5,]    0    0    0    1    1
Run Code Online (Sandbox Code Playgroud)

我想做的是使用这个矩阵来识别朋友组,其中 1 表示友谊。组是基于组内的任何连接而形成的,而不仅仅是一级连接(即 1 是 2 的朋友,2 是 3 但不是 1 的朋友,但它们都在同一个组中)。如果一行仅与自身相关联,那么它就是它自己的组。我想创建一个 data.frame 指示这些组中的成员资格(使用行号作为 ID)(一个数字作为 ID 很好,我只是使用字母来避免混淆)。对于此示例,这将是以下内容:

row  group
 1    A
 2    A
 3    A
 4    B
 5    B
Run Code Online (Sandbox Code Playgroud)

我已经考虑了一些聚类算法,但这在这里似乎有点矫枉过正,因为这些组定义明确且显而易见。

r

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