Html R:expss包:do.call(data.frame,c(x,alis))中出错:变量名限制为10000字节
我使用expss包在R中定义了一些表函数来自动制表。 我的一个表格想要显示类别的案例或百分比,然后是平均值。平均值可以基于同一类别变量,也可以定义为另一个变量。 总的来说,代码工作得很完美。对于一些变量,尽管我一直在纠结错误代码“do.call(data.frame,c(x,alis))中的错误:变量名限制为10000字节” 此表的代码Html R:expss包:do.call(data.frame,c(x,alis))中出错:变量名限制为10000字节,html,r,automation,non-standard-evaluation,expss,Html,R,Automation,Non Standard Evaluation,Expss,我使用expss包在R中定义了一些表函数来自动制表。 我的一个表格想要显示类别的案例或百分比,然后是平均值。平均值可以基于同一类别变量,也可以定义为另一个变量。 总的来说,代码工作得很完美。对于一些变量,尽管我一直在纠结错误代码“do.call(data.frame,c(x,alis))中的错误:变量名限制为10000字节” 此表的代码 Table2 = function (Q, banner=banner, caption , Q.mean, ddata=d, questlab=dques
Table2 = function (Q, banner=banner, caption , Q.mean, ddata=d, questlab=dquest, mis.val=999) {
x_totaln<-eval(substitute(x),ddata)
x_totaln[is.na(eval(substitute(Q),ddata))]<-NA
if(missing(Q.mean))
{Q_mean<-eval(substitute(Q),ddata)}
else
{Q_mean<-eval(substitute(Q.mean),ddata)}
Q_mean[Q_mean==mis.val]<-NA
if(missing(caption))
{caption<-eval(substitute(var_lab(Q_mean)),questlab)}
eval.parent(substitute(
{
banner %>%
tab_cells (x_totaln) %>%
tab_stat_cases(total_row_position = c("none"),label = 'N') %>%
tab_cells (Q) %>%
tab_stat_cases(total_row_position = c("none"),label = 'N') %>%
tab_stat_cpct(total_row_position = c("none"), label = '%') %>%
tab_cells (Q_mean) %>%
tab_stat_mean(label = 'Mean') %>%
tab_pivot (stat_position = "inside_rows") %>%
drop_c () %>%
custom_format2() %>%
set_caption(caption)
}
))
}
对于某些变量,尽管它会生成错误代码
Table2(age_cat,Q.mean=age,caption="Your age at the start of the programme?")
Error in do.call(data.frame, c(x, alis)) :
variable names are limited to 10000 bytes
19.
do.call(data.frame, c(x, alis))
虽然在代码中包含变量,但仍然可以完美地工作
Table2test = function () {
x_totaln<-eval(substitute(x),d)
x_totaln[is.na(eval(substitute(age_cat),d))]<-NA
Q_mean<-eval(substitute(age),d)
Q_mean[Q_mean==999]<-NA
banner %>%
tab_cells (x_totaln) %>%
tab_stat_cases(total_row_position = c("none"),label = 'N') %>%
tab_cells (age_cat) %>%
tab_stat_cases(total_row_position = c("none"),label = 'N') %>%
tab_stat_cpct(total_row_position = c("none"), label = '%') %>%
tab_cells (Q_mean) %>%
tab_stat_mean(label = 'Mean') %>%
tab_pivot (stat_position = "inside_rows") %>%
drop_c () %>%
custom_format2() %>%
set_caption("Your age at the start of the programme?")
}
Table2test=函数(){
x_总计n%
tab统计案例(总计行位置=c(“无”),label='N')%>%
tab_stat_cpct(总行位置=c(“无”),label='%')%>%
tab_单元格(Q_平均值)%>%
选项卡统计平均值(标签='平均值')%>%
制表符轴(stat\u position=“inside\u rows”)%>%
下降c()%>%
自定义格式2()%>%
设置标题(“您在课程开始时的年龄?”)
}
有什么建议吗?或者有人知道为什么会发生错误吗
感谢当您
替换变量时,在某些情况下,它们被表示为结构。在这种情况下,表达式中没有变量名,只有值:tab_单元格(结构(c(22,23,22,23,…许多数字)))。我们尝试在结果表中使用这个长表示作为名称。但是R对名称的长度有限制。在这里,函数失败了。解决方案非常简单-我们将始终设置变量标签,并将其用作名称。因此,以下代码运行时不会出现任何错误:
Table2 = function (Q, banner=banner, caption , Q.mean, ddata=d, questlab=dquest, mis.val=999) {
x_totaln<-eval(substitute(x),ddata)
x_totaln[is.na(eval(substitute(Q),ddata))]<-NA
var_lab(x_totaln) = "Total" # add label for total
if(missing(Q.mean))
{Q_mean<-eval(substitute(Q),ddata)}
else
{Q_mean<-eval(substitute(Q.mean),ddata)}
Q_mean[Q_mean==mis.val]<-NA
if(missing(caption))
{caption<-eval(substitute(var_lab(Q_mean)),questlab)}
eval.parent(substitute(
{
banner %>%
tab_cells (x_totaln) %>%
tab_stat_cases(total_row_position = c("none"),label = 'N') %>%
tab_cells (Q) %>%
tab_stat_cases(total_row_position = c("none"),label = 'N') %>%
tab_stat_cpct(total_row_position = c("none"), label = '%') %>%
tab_cells ("|" = Q_mean) %>% # "|" suppress label for mean
tab_stat_mean(label = 'Mean') %>%
tab_pivot (stat_position = "inside_rows") %>%
drop_c () %>%
custom_format2() %>%
set_caption(caption)
}
))
}
Table2=函数(Q,banner=banner,caption,Q.mean,ddata=d,questlab=dquest,mis.val=999){
x_总计n%
tab|单元格(“|”=Q|u平均值)%>%#“|”抑制平均值的标签
选项卡统计平均值(标签='平均值')%>%
制表符轴(stat\u position=“inside\u rows”)%>%
下降c()%>%
自定义格式2()%>%
设置标题(标题)
}
))
}
您能为您的数据样本提供导致错误的变量吗?这个变量可能没有标签吗?de数据有标签,我如何最好地共享?wich格式?rds格式-saveRDS(“sample.rds”)
。你可以与google drive/dropbox等分享,也可以通过gmail.com向gdemin发送电子邮件
Table2 = function (Q, banner=banner, caption , Q.mean, ddata=d, questlab=dquest, mis.val=999) {
x_totaln<-eval(substitute(x),ddata)
x_totaln[is.na(eval(substitute(Q),ddata))]<-NA
var_lab(x_totaln) = "Total" # add label for total
if(missing(Q.mean))
{Q_mean<-eval(substitute(Q),ddata)}
else
{Q_mean<-eval(substitute(Q.mean),ddata)}
Q_mean[Q_mean==mis.val]<-NA
if(missing(caption))
{caption<-eval(substitute(var_lab(Q_mean)),questlab)}
eval.parent(substitute(
{
banner %>%
tab_cells (x_totaln) %>%
tab_stat_cases(total_row_position = c("none"),label = 'N') %>%
tab_cells (Q) %>%
tab_stat_cases(total_row_position = c("none"),label = 'N') %>%
tab_stat_cpct(total_row_position = c("none"), label = '%') %>%
tab_cells ("|" = Q_mean) %>% # "|" suppress label for mean
tab_stat_mean(label = 'Mean') %>%
tab_pivot (stat_position = "inside_rows") %>%
drop_c () %>%
custom_format2() %>%
set_caption(caption)
}
))
}