我有一个应用程序做了一些长时间的计算,我想在完成后显示进度对话框.到目前为止,我发现我可以使用线程/处理程序执行此操作,但是没有工作,然后我发现了有关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) 我写了一个脚本,如果提供的数据不正确,应停止执行.但是,虽然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中停止脚本.
我也尝试过return和break,但这只有在一个函数或循环工作.我搜索了其他可能的关键字,如"停止"和"结束",但没有运气.我感觉有点愚蠢,因为这似乎是一个非常基本的问题.
那么,是否有一个命令可以使我的脚本停止/停止/结束致命错误?
我在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) 我有一个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) 我正在绘制几个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) 我想从数据集创建一个带有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)
创造了一个情节,其中物种的分组很好,但颜色是误导.我不知道如何解决这个问题.
我需要一个具有以下属性的图:
specieslocation,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) 我有一个包含两列的数据框,最后一列有重复:
#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) 我rcorr()在R中使用函数建立两个不同矩阵之间的相关性:
res <- rcorr(as.matrix(table1), as.matrix(table2),type="pearson")
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,但我想避免表内相关 - 任何建议?
我无法理解 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, …
r ×8
ggplot2 ×3
legend ×2
android ×1
boxplot ×1
correlation ×1
grob ×1
heatmap ×1
labels ×1
pdf ×1
performance ×1
rasterizing ×1
return ×1
string ×1
timezone ×1