我的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选择器中进行选择?
这是一个小细节,但每次我懒得加载一些东西我都会被它抓住.这两种方法都可以接受吗?要么更好吗?假设变量具有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
对于文档rdply
的plyr
包说,这对.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) 我正在使用包中的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中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位版本都会发生错误.
我想循环一个向量并将值作为参数发送到函数.我想发送的值之一是NULL.这就是我一直在尝试的
things <- c('M','F',NULL)
for (thing in things){
doSomething(thing)
}
Run Code Online (Sandbox Code Playgroud)
但循环忽略NULL值.有什么建议?
我试图使用rowwise
并mutate
具有能够返回一个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中编写一个函数,除其他外,它基于列名的向量子集数据帧.我试图利用默认行为,[.data.frame
如果缺少'j'参数,将返回所有列.有没有办法通过我的包装函数传递一个缺少的参数?这是一个简单的例子:
fixDataFrames <- function(listOfDataFrames, columns){
lapply(listOfDataFrames, function(x) x[,columns])
}
Run Code Online (Sandbox Code Playgroud)
如果我没有为列指定值,则在将其传递给[
函数时会出现错误:"columns参数缺失,没有默认值".
这是一个看似简单的问题,但我想不出答案。这是最简单的情况:
考虑以下矩阵:
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)
我已经考虑了一些聚类算法,但这在这里似乎有点矫枉过正,因为这些组定义明确且显而易见。