我正在使用ddply对一个大 Dataframe 进行数十次计算密集型分析。 Dataframe 由序列数据组成(行1 =试验1,行2 =试验2,等等),并且每个受试者有几个试验块。分析返回几个数值测量,我绑定并返回,但它也返回数据的稀疏矩阵表示,我想把它绘制成一个文件。
data <- read.table("data.tsv", header= TRUE)
fqra <- function(x) {
temp <- crqa(as.numeric(x$to.roi), as.numeric(x$to.roi), delay = 1, embed = 1,
rescale = 0, radius = .001, normalize=0,mindiagline = 2, minvertline = 2,
tw=0, whiteline = FALSE, recpt=FALSE, side="upper",
checkl = list(do = FALSE, thrshd = 3, datatype = "categorical",
pad = FALSE))
directory = "~/TS14data/Plots/"
a = paste(directory, as.character(x$sid[1]), as.character(x$game.num[1]), ".png",sep="_")
png(filename = a)
b<- image(temp$RP)
dev.off()
return(cbind(temp$RR, temp$DET, temp$NRLINE, temp$maxL,
temp$L, temp$ENTR, temp$rENTR, temp$LAM, temp$TT))
}
results <- ddply(Eyedatdata, .(subject, block), fqra)
代码运行没有错误,并按主题和块给了我结果,没有问题,但绘图无处可寻。这是plyr操作的问题吗?我不能在ddply的函数中打开设备吗?
编辑:一个更简单的例子重现了这个问题。我有一个稀疏矩阵,我想创建它的图像,并将其放置在一个文件中。
library(matrix)
f<-function(x) {
T2 <- new("dgTMatrix", i = as.integer(c(1,1,0,3,3)), j = as.integer(c(2,2,4,0,0)), x=10*1:5, Dim=4:5)
png("example.png");
image(T2)
dev.off()
}
results<-ddply(mtcars, .(gear), f)
删除函数内部的所有内容并独立运行它会产生“example.png”图。似乎发生的是image(T2)没有从ddply调用中输出到文件。我不知道为什么会发生这种情况。
1条答案
按热度按时间qjp7pelc1#
这个问题在MrFlick的评论中得到了回答:
Matrix库(您显然正在使用)覆盖了默认的基本
image()
函数,以返回一个trellis
对象,该对象需要显式地被print()
编辑。