Hello, sorry for the delay; I am still having trouble receiving e-mails
from the rkward mail group.
Here is what I could do with a brand new installation of Windows 11. Using:
* rkward-master-2474-windows-cl-msvc2022-x86_64.exe 2026-03-28 08:59 316M
* First installed R-4.5.3 for Windows,
Then, RKWard installation continued as expected.
Here I'll try to show what I found next, commented with "#".
# Here is the command for the first session with this message:
No program defined
rk.set.output.html.file("C:/Users/alfon/.rkward/unsaved_output/index.html")
# Quit (restarting)
An unspecified error occurred while running the command.
.libPaths()
.rk.get.package.installation.state ()
install.packages (c ("rmarkdown", "R2HTML"),
lib="C:\\Users\\alfon\\AppData\\Local/R/win-library/4.5")
.rk.get.package.installation.state ()
# Had no crash here. So I loaded a data set to try out.
"penguins" <- datasets::penguins
# Creating a few descriptive statistics,
local({
## Compute
vars <- rk.list (penguins[["body_mass"]])
results <- data.frame ("Object"=I(names (vars)))
for (i in 1:length (vars)) {
var <- vars[[i]]
# we wrap each single call in a "try" statement to always continue on
errors.
results[i, "mean"] <- try (mean (var, trim = 0.00, na.rm=TRUE))
results[i, "geometric mean"] <- try (prod (na.omit(var))^(1 / length
(na.omit(var))))
results[i, "interquantile mean"] <- try (sum(quantile(var, probs=c(0.25),
na.rm=T), quantile(var, probs=c(0.75), na.rm=TRUE)) / 2)
results[i, "harmonic mean"] <- try (1 / mean(1 / na.omit(var)))
results[i, "median"] <- try (median (var, na.rm=TRUE))
try ({
range <- try (range (var, na.rm=TRUE))
results[i, "min"] <- range[1]
results[i, "max"] <- range[2]
})
results[i, "standard deviation"] <- try (sd (var, na.rm=TRUE))
results[i, "sum"] <- try (sum (var, na.rm=TRUE))
results[i, "product"] <- try (prod (var, na.rm=TRUE))
results[i, "Median Absolute Deviation"] <- try (mad (var, constant =
1.4628, na.rm=TRUE))
results[i, "total length (N)"] <- length (var)
results[i, "number of NAs"] <- sum (is.na(var))
}
## Print result
rk.header ("Descriptive statistics", parameters=list("Trim of mean"="0.00"))
rk.header ("Median Absolute Deviation", parameters=list("Constant"="1.4628",
"Treatment of even sample sizes"="use average"), level=3)
rk.results (results)
})
I think the output that was produced is :
local ({
outfile <- tempfile (fileext='.html')
rk.assign.preview.data("0x1857efd88f0", list (filename=outfile,
on.delete=function (id) {
rkward:::.rk.discard.output(outfile)
}))
oldfile <- rk.set.output.html.file (outfile, style='preview') # for
initialization
rk.set.output.html.file (oldfile)
})
.rk.with.window.hints ({rk.show.html(rk.get.preview.data
("0x1857efd88f0")$filename)
}, "", "0x1857efd88f0", style="preview")
Error in rk.set.output.html.file(oldfile) : is.character(x) is not TRUE
local({
## Compute
vars <- rk.list (penguins[["body_mass"]])
results <- data.frame ("Object"=I(names (vars)))
for (i in 1:length (vars)) {
var <- vars[[i]]
# we wrap each single call in a "try" statement to always continue on
errors.
results[i, "mean"] <- try (mean (var, trim = 0.00, na.rm=TRUE))
results[i, "geometric mean"] <- try (prod (na.omit(var))^(1 / length
(na.omit(var))))
results[i, "interquantile mean"] <- try (sum(quantile(var, probs=c(0.25),
na.rm=T), quantile(var, probs=c(0.75), na.rm=TRUE)) / 2)
results[i, "harmonic mean"] <- try (1 / mean(1 / na.omit(var)))
results[i, "median"] <- try (median (var, na.rm=TRUE))
try ({
range <- try (range (var, na.rm=TRUE))
results[i, "min"] <- range[1]
results[i, "max"] <- range[2]
})
results[i, "standard deviation"] <- try (sd (var, na.rm=TRUE))
results[i, "sum"] <- try (sum (var, na.rm=TRUE))
results[i, "product"] <- try (prod (var, na.rm=TRUE))
results[i, "Median Absolute Deviation"] <- try (mad (var, constant =
1.4628, na.rm=TRUE))
results[i, "total length (N)"] <- length (var)
results[i, "number of NAs"] <- sum (is.na(var))
}
## Print result
rk.header ("Descriptive statistics", parameters=list("Trim of mean"="0.00"))
rk.header ("Median Absolute Deviation", parameters=list("Constant"="1.4628",
"Treatment of even sample sizes"="use average"), level=3)
rk.results (results)
})
.rk.rerun.plugin.link(plugin="rkward::descriptive",
settings="constMad.real=1.4628\nfile.overwrite=0\nfile.selection=C:/Users/alfon/data\ngeo_mean.state=1\ngroups.available=\nharmonic_mean.state=1\ninterquantile_mean.state=1\nlength.state=1\nmad.state=1\nmad_type.string=average\nmean.state=1\nmedian.state=1\nprod.state=1\nrange.state=1\nsave_to_file.state=0\nsd.state=1\nsum.state=1\ntrim.real=0.00\nx.available=penguins[[\\\"body_mass\\\"]]",
label="Run again")
.rk.make.hr()
# And an HTML file was created, but it is not an RKWard rko file with a
RANDOM name starting with a "file" prefix, so I tried a correlation...
local({
## Compute
# cor requires all objects to be inside the same data.frame.
# Here we construct such a temporary frame from the input variables
data.list <- rk.list (penguins[["flipper_len"]], penguins[["body_mass"]])
data <- as.data.frame (data.list, check.names=FALSE)
# calculate correlation matrix
result <- cor (data, use="pairwise.complete.obs", method="pearson")
# calculate matrix of probabilities
result.p <- matrix (nrow = length (data), ncol = length (data),
dimnames=list (names (data), names (data)))
for (i in 1:length (data)) {
for (j in i:length (data)) {
if (i != j) {
t <- cor.test (data[[i]], data[[j]], method="pearson")
result.p[i, j] <- t$p.value
result.p[j, i] <- sum (complete.cases (data[[i]], data[[j]]))
}
}
}
## Print result
rk.header ("Correlation Matrix", parameters=list("Method"="Pearson's
product-moment correlation",
"Exclude missing values"="pairwise"))
rk.results (data.frame (result, check.names=FALSE), titles=c
("Coefficient", names (data)))
rk.header ("p-values and sample size", level=4)
rk.results (data.frame (result.p, check.names=FALSE), titles=c ("n \\ p",
names (data)))
})
.rk.rerun.plugin.link(plugin="rkward::corr_matrix",
settings="do_p.state=1\nmethod.string=pearson\nto_numeric.state=0\nuse.string=pairwise\nx.available=penguins[[\\\"flipper_len\\\"]]\\npenguins[[\\\"body_mass\\\"]]",
label="Run again")
.rk.make.hr()
# But I didn't see the result, so I tried it once more with a recently
created output file:
local({
## Compute
# cor requires all objects to be inside the same data.frame.
# Here we construct such a temporary frame from the input variables
data.list <- rk.list (penguins[["bill_len"]], penguins[["body_mass"]])
data <- as.data.frame (data.list, check.names=FALSE)
# calculate correlation matrix
result <- cor (data, use="pairwise.complete.obs", method="pearson")
# calculate matrix of probabilities
result.p <- matrix (nrow = length (data), ncol = length (data),
dimnames=list (names (data), names (data)))
for (i in 1:length (data)) {
for (j in i:length (data)) {
if (i != j) {
t <- cor.test (data[[i]], data[[j]], method="pearson")
result.p[i, j] <- t$p.value
result.p[j, i] <- sum (complete.cases (data[[i]], data[[j]]))
}
}
}
## Print result
rk.header ("Correlation Matrix", parameters=list("Method"="Pearson's
product-moment correlation",
"Exclude missing values"="pairwise"))
rk.results (data.frame (result, check.names=FALSE), titles=c
("Coefficient", names (data)))
rk.header ("p-values and sample size", level=4)
rk.results (data.frame (result.p, check.names=FALSE), titles=c ("n \\ p",
names (data)))
})
.rk.rerun.plugin.link(plugin="rkward::corr_matrix",
settings="do_p.state=1\nmethod.string=pearson\nto_numeric.state=0\nuse.string=pairwise\nx.available=penguins[[\\\"bill_len\\\"]]\\npenguins[[\\\"body_mass\\\"]]",
label="Run again")
.rk.make.hr()
# But still nothing. At this point I realized that I had not activated the
output file...
rk.set.output.html.file("C:/Users/alfon/.rkward/unsaved_output/index.html")
# So I tried again:
## Compute
# cor requires all objects to be inside the same data.frame.
# Here we construct such a temporary frame from the input variables
data.list <- rk.list (penguins[["bill_len"]], penguins[["body_mass"]])
data <- as.data.frame (data.list, check.names=FALSE)
# calculate correlation matrix
result <- cor (data, use="pairwise.complete.obs", method="pearson")
# calculate matrix of probabilities
result.p <- matrix (nrow = length (data), ncol = length (data),
dimnames=list (names (data), names (data)))
for (i in 1:length (data)) {
for (j in i:length (data)) {
if (i != j) {
t <- cor.test (data[[i]], data[[j]], method="pearson")
result.p[i, j] <- t$p.value
result.p[j, i] <- sum (complete.cases (data[[i]], data[[j]]))
}
}
}
## Print result
rk.header ("Correlation Matrix", parameters=list("Method"="Pearson's
product-moment correlation",
"Exclude missing values"="pairwise"))
rk.results (data.frame (result, check.names=FALSE), titles=c
("Coefficient", names (data)))
rk.header ("p-values and sample size", level=4)
rk.results (data.frame (result.p, check.names=FALSE), titles=c ("n \\ p",
names (data)))
})
.rk.rerun.plugin.link(plugin="rkward::corr_matrix",
settings="do_p.state=1\nmethod.string=pearson\nto_numeric.state=0\nuse.string=pairwise\nx.available=penguins[[\\\"bill_len\\\"]]\\npenguins[[\\\"body_mass\\\"]]",
label="Run again")
.rk.make.hr()
# FInally it worked. At last tried out the descriptive dialog, and now it
was appended correctly within the rko file.
local({
## Compute
vars <- rk.list (penguins[["body_mass"]])
results <- data.frame ("Object"=I(names (vars)))
for (i in 1:length (vars)) {
var <- vars[[i]]
# we wrap each single call in a "try" statement to always continue on
errors.
results[i, "mean"] <- try (mean (var, trim = 0.00, na.rm=TRUE))
results[i, "geometric mean"] <- try (prod (na.omit(var))^(1 / length
(na.omit(var))))
results[i, "interquantile mean"] <- try (sum(quantile(var, probs=c(0.25),
na.rm=T), quantile(var, probs=c(0.75), na.rm=TRUE)) / 2)
results[i, "harmonic mean"] <- try (1 / mean(1 / na.omit(var)))
results[i, "median"] <- try (median (var, na.rm=TRUE))
try ({
range <- try (range (var, na.rm=TRUE))
results[i, "min"] <- range[1]
results[i, "max"] <- range[2]
})
results[i, "standard deviation"] <- try (sd (var, na.rm=TRUE))
results[i, "sum"] <- try (sum (var, na.rm=TRUE))
results[i, "product"] <- try (prod (var, na.rm=TRUE))
results[i, "Median Absolute Deviation"] <- try (mad (var, constant =
1.4628, na.rm=TRUE))
results[i, "total length (N)"] <- length (var)
results[i, "number of NAs"] <- sum (is.na(var))
}
## Print result
rk.header ("Descriptive statistics", parameters=list("Trim of mean"="0.00"))
rk.header ("Median Absolute Deviation", parameters=list("Constant"="1.4628",
"Treatment of even sample sizes"="use average"), level=3)
rk.results (results)
})
.rk.rerun.plugin.link(plugin="rkward::descriptive",
settings="constMad.real=1.4628\nfile.overwrite=0\nfile.selection=C:/Users/alfon/data\ngeo_mean.state=1\ngroups.available=\nharmonic_mean.state=1\ninterquantile_mean.state=1\nlength.state=1\nmad.state=1\nmad_type.string=average\nmean.state=1\nmedian.state=1\nprod.state=1\nrange.state=1\nsave_to_file.state=0\nsd.state=1\nsum.state=1\ntrim.real=0.00\nx.available=penguins[[\\\"body_mass\\\"]]",
label="Run again")
.rk.make.hr()
#In this version, it did not crash, at least with these commands, but had
to create and activate the output file.
I hope this helps.
Regards,
Alfonso
---
Hi,
Am Wed, 25 Mar 2026 13:41:51 -0600
schrieb DES Alfonso Cano Robles <alfonsociologo at gmail.com>:
> I just wanted to let you know that I've found three bugs that cause the
> program to crash.
> * The first occurs when the data editor window is split.
> * The second happens when saving the RData file.
> * The third occurs when trying to execute a command that requires creating
> a new output file.
Thanks for reporting!
I've fixed the first one in master. Updated builds should appear in the
usual
place, shortly.
I could not immediately reproduce the latter. Can you pinpoint
more exactly, what conditions might be required to trigger it? When starting
with a fresh session, what are the exact steps needed to reproduce?
Conceivably, however, this was caused by the same underlying issue, and as
the
first, so with a bit of luck might be fixed.
I'll investigate the third. Some first quick checks seem to indicate, this
happens when opening an output file that has not yet been initialized. I.e.:
x <- rk.output(create=TRUE)
x$activate()
x$view()
does not crash. However, a crash occurs, if x$activate() is omitted.
Regards
Thomas
--
Dr. Alfonso Cano Robles
--
RKWard mailing list
[email protected]
https://mail.kde.org/cgi-bin/mailman/listinfo/rkward