小编RHA*_*RHA的帖子

将参数传递给AsyncTask,并返回结果

我有一个应用程序做了一些长时间的计算,我想在完成后显示进度对话框.到目前为止,我发现我可以使用线程/处理程序执行此操作,但是没有工作,然后我发现了有关AsyncTask.

在我的应用程序中,我使用带有标记的地图,并且我已经实现了onTap函数来调用我已经定义的方法.该方法创建一个带有"是/否"按钮的对话框,AsyncTask如果单击"是" ,我想调用它.我的问题是如何传递ArrayList<String>AsyncTask(并在那里工作),以及如何从一个新ArrayList<String>的结果回来AsyncTask

该方法的代码如下所示:

String curloc = current.toString();
String itemdesc = item.mDescription;

ArrayList<String> passing = new ArrayList<String>();
passing.add(itemdesc);
passing.add(curloc);

ArrayList<String> result = new ArrayList<String>();

new calc_stanica().execute(passing,result);

String minim = result.get(0);
int min = Integer.parseInt(minim);

String glons = result.get(1);
String glats = result.get(2);

double glon = Double.parseDouble(glons);
double glat = Double.parseDouble(glats);

GeoPoint g = new GeoPoint(glon, glat);
String korisni_linii = result.get(3);
Run Code Online (Sandbox Code Playgroud)

所以,如你所见,我想将字符串数组列表"传递"给它AsyncTask,并从中获取"结果"字符串数组列表.calc_stanica AssycTask类看起来像这样:

public class calc_stanica …
Run Code Online (Sandbox Code Playgroud)

android return progressdialog android-asynctask

37
推荐指数
2
解决办法
10万
查看次数

如何在R中停止/结束/暂停脚本?

我写了一个脚本,如果提供的数据不正确,应停止执行.但是,虽然stop会生成错误消息,但脚本仍会继续.一个最小的例子:

if (TRUE) {stop("End of script?")} #It should stop here
print("Script did NOT end!") # but it doesn't, because this line is printed!
Run Code Online (Sandbox Code Playgroud)

控制台输出:

> if (TRUE) {stop("End of script?")}
Error: End of script?
> print("Script did NOT end!")
[1] "Script did NOT end!"
>
Run Code Online (Sandbox Code Playgroud)

这实际上并不奇怪,因为来自?stop:

停止执行当前表达式并执行错误操作.

所以它只结束当前表达式,而不是脚本.我在这里发现你可以将{}包裹在整个脚本周围(或者将它放在一个函数中),但这似乎是一种解决方法而不是解决方案.当然,捕获错误并自行处理它们是很好的编程习惯(例如参见mra68中的注释中的链接),但我仍然想知道是否可以在R中停止脚本.

我也尝试过returnbreak,但这只有在一个函数或循环工作.我搜索了其他可能的关键字,如"停止"和"结束",但没有运气.我感觉有点愚蠢,因为这似乎是一个非常基本的问题.

那么,是否有一个命令可以使我的脚本停止/停止/结束致命错误?

我在Windows 8上运行R 3.2.3,但在MAC-OSX上与R 3.0.1有同样的问题.

> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 …
Run Code Online (Sandbox Code Playgroud)

error-handling r stoppropagation

23
推荐指数
3
解决办法
2万
查看次数

热图中z分数和相应p值的共享图例

我有一个z分数matrix:

set.seed(1)
z.score.mat <- matrix(rnorm(1000),nrow=100,ncol=10)
Run Code Online (Sandbox Code Playgroud)

这是一些生物实验数据的结果,以及相应的p值矩阵:

p.val.mat <- pnorm(abs(z.score.mat),lower.tail = F)
Run Code Online (Sandbox Code Playgroud)

两者都相同dimnames:

rownames(z.score.mat) <- paste("p",1:100,sep="")
colnames(z.score.mat) <- paste("c",1:10,sep="")
rownames(p.val.mat) <- paste("p",1:100,sep="")
colnames(p.val.mat) <- paste("c",1:10,sep="")
Run Code Online (Sandbox Code Playgroud)

我正在绘制heatmap像这样的z分数的分层聚类:

hc.col <- hclust(dist(z.score.mat))
dd.col <- as.dendrogram(hc.col)
col.ord <- order.dendrogram(dd.col)
hc.row <- hclust(dist(t(z.score.mat)))
dd.row <- as.dendrogram(hc.row)
row.ord <- order.dendrogram(dd.row)
clustered.mat <- z.score.mat[col.ord,row.ord]
clustered.mat.names <- attr(clustered.mat,"dimnames")
clustered.mat.df <- as.data.frame(clustered.mat)
colnames(clustered.mat.df) <- clustered.mat.names[[2]]
clustered.mat.df[,"process"] <- clustered.mat.names[[1]]
clustered.mat.df[,"process"] <- with(clustered.mat.df,factor(clustered.mat.df[,"process"],levels=clustered.mat.df[,"process"],ordered=TRUE))

require(reshape2)
clustered.mat.df <- reshape2::melt(clustered.mat.df,id.vars="process")
colnames(clustered.mat.df)[2:3] <- c("condition","z.score")
clustered.mat.df$p.value <- sapply(1:nrow(clustered.mat.df),function(x) p.val.mat[which(rownames(p.val.mat) == clustered.mat.df$process[x]),which(colnames(p.val.mat) …
Run Code Online (Sandbox Code Playgroud)

r legend heatmap ggplot2

11
推荐指数
3
解决办法
758
查看次数

在R中,以点开头的变量存储在哪里?

我很好奇以点开头的变量.例如

.var <- 100
Run Code Online (Sandbox Code Playgroud)

它不属于全球环境.这个变量属于什么环境?

r global-variables

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

有没有办法将grob直接保存到rasterGrob?

我正在绘制几个ggplot2对象并将它们置于grid.arrange内部调用'pdf'设备.我发现如果我首先光栅化这些图表,PDF的性能会提高十亿倍(生成速度更快,渲染速度更快).所以在一个并行dlply循环中,我正在使用ggsave将其ggplot2作为PNG 编写,然后使用readPNG它来重新读取并rasterGrob转换为返回它dlply.在dlply将其放入一个列表grobs,其grid.arrange然后绘制到PDF设备.

其中一些似乎不实用,所以一般来说,有更好的方法吗?但真正让我感到困惑的是将PNG写入磁盘,而我所做的就是将它们读回来.有没有办法将grob直接保存到rasterGrob?

plot.list <- dlply( ... {
        ggsave(filename= fname
               ,plot= my.plot
               ,device= "png" 
               ,scale = 1, width= 1.1, height= 2.125, units = "in" 
               ,dpi = dpi)

        # return it as a list of rasters
        rasterGrob(readPNG( source= fname, info= TRUE))
}
Run Code Online (Sandbox Code Playgroud)

pdf r rasterizing ggplot2 grob

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

ggplot2:boxplot,颜色和文本标签映射到两个分类变量的组合

我想从数据集创建一个带有ggplot2的箱线图,该数据集densityAGRLKA在x轴上有3个分类变量(物种,位置,位置).

以下功能:

ggplot(densityAGRLKA, aes(species, density, fill=location, alpha=position), dodge=species, position) + 
stat_boxplot(geom ='errorbar') + 
geom_boxplot() 
Run Code Online (Sandbox Code Playgroud)

创造了一个情节,其中物种的分组很好,但颜色是误导.我不知道如何解决这个问题.

我需要一个具有以下属性的图:

  • 数据按分组 species
  • 在集团内location,
  • 并在顺序的位置内top,然后bottom.

另外,如果location将它们写在属于一起的两个盒子position下面,并且在每个盒子下面,那就太棒了.或者更好的着色/阴影框然后提供一个清晰的传奇?

样本数据:

densityAGRLKA = structure(list(location = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L), .Label = …
Run Code Online (Sandbox Code Playgroud)

r legend labels ggplot2 boxplot

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

在一个中删除重复值后,更好/更快地连接两列?

我有一个包含两列的数据框,最后一列有重复:

 #reproducible data
    my.df <- data.frame(nr = paste(1:6,1,sep="_"),
                        text = c("aa","bb","aa",NA,"bb","xxxx"))
   nr text
1 1_1   aa
2 2_1   bb
3 3_1   aa
4 4_1 <NA>
5 5_1   bb
6 6_1 xxxx
Run Code Online (Sandbox Code Playgroud)

我想在第一列中对值进行分组,然后添加第二列的值.我找到了一种方法来做到这一点:

apply(aggregate(nr~text, my.df, FUN=function(x) paste0(x, collapse = "/"))[,c(2,1)],1,FUN=function(x) paste(x[1],x[2], sep = ": "))
Run Code Online (Sandbox Code Playgroud)

这使:

"1_1/3_1: aa" "2_1/5_1: bb" "6_1: xxxx"
Run Code Online (Sandbox Code Playgroud)

这是我想要的结果,但代码似乎相当长.我觉得必须有一个更好的,也许更快的方法来做到这一点?

哦,是的,NA应该从结果中删除.

编辑:

感谢所有的答案.我认为有一个比我自己更容易的解决方案,但显然没有.可读性是(恕我直言)非常主观,所以我做了一个基准:

microbenchmark(RHA(my.df),Heroka_DT(my.df),Heroka_Base(my.df),Jubbles(my.df),times=100L)

Unit: milliseconds
               expr       min        lq      mean    median        uq
         RHA(my.df)  9.116587  9.315988  9.662611  9.572361 10.036792
   Heroka_DT(my.df) 12.148374 12.448035 13.009290 12.766685 13.475480
 Heroka_Base(my.df)  2.947448  6.910890  7.475239 …
Run Code Online (Sandbox Code Playgroud)

string performance r

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

rcorr()函数用于相关

rcorr()在R中使用函数建立两个不同矩阵之间的相关性:

res <- rcorr(as.matrix(table1), as.matrix(table2),type="pearson")
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常,但我想避免表内相关 - 任何建议?

r correlation

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

了解 R 中的时区字符串

我无法理解 R 中如何处理时区字符串以及为什么Sys.time()使用与Sys.timezone()?不同的字符串?

Sys.time() 返回:

[1]“2016-05-13 10:17:04 CEST”

as.POSIXct(Sys.time()) 作品:

[1]“2016-05-13 10:17:11 CEST”

并且as.POSIXct("2016-05-1 10:15:21 CEST")也有效:

[1]“2016-05-01 10:15:21 CEST”

然而,as.POSIXct("2016-05-1 10:15:21", tz = "CEST")没有工作:

[1]“2016-05-01 10:15:21 GMT”
警告消息:
1:在 strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz) : 未知时区 'CEST'
2: 在 as.POSIXct.POSIXlt(x) : 未知时区 'CEST'
3: 在 strptime(x, f, tz = tz) : 未知时区 'CEST'
4: 在 as.POSIXct .POSIXlt(as.POSIXlt(x, tz, ...), tz, ...) : 未知时区 'CEST'
5: 在 as.POSIXlt.POSIXct(x, …

timezone r

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