过渡状态图 R
Transition State Diagram R
我的数据看起来像这样:
dput(sequence_data)
的输出;
structure(list(Obs = 1:13, Seq.1 = structure(c(1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L), .Label = c("a", "b", "c"
), class = "factor"), Seq.2 = structure(c(1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("c", "d"), class = "factor"),
Seq.3 = structure(c(1L, 1L, 1L, 2L, 1L, 1L, 3L, 3L, 3L, 3L,
3L, 3L, 3L), .Label = c("", "d", "e"), class = "factor"),
Seq.4 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L,
1L, 1L, 2L), .Label = c("", "f"), class = "factor")), .Names = c("Obs",
"Seq.1", "Seq.2", "Seq.3", "Seq.4"), class = "data.frame", row.names = c(NA,
-13L))
我正在尝试获取过渡状态图。这是代码:
transitions <- table(sequence_data$Seq.1,sequence_data$Seq.2) %>%
getRefClass("Transition")$new(label=c("1st Iteration", "2nd Iteration"))
transitions$box_width = 0.25;
transitions$box_label_cex = 0.7;
transitions$arrow_type = "simple";
transitions$arrow_rez = 300;
table(sequence_data$Seq.2,sequence_data$Seq.3) %>% transitions$addTransitions(label = '3rd Iteration')
transitions$render()
这是输出:
能否从图表中删除空值,使其看起来更清晰?我尝试删除,但 table 语句需要值的长度相同。
我正在为图表使用 GMISC 包 (library(Gmisc)
)。
谢谢
这可能有点老套,但可以帮助您。基本上你手动设置转换 (transitions$transitions
) 到 0
.
transitions$transitions[[2]][1,1] = 0
transitions$transitions[[2]][2,1] = 0
transitions$render()
也许这个循环可以自动将所有值更改为0
(虽然我还没有检查大数据)
for (level_n in 1:length(transitions$transitions)){
x = transitions$transitions[[level_n]]
for (cols in 1:ncol(transitions$transitions[[level_n]])){
if (dimnames(x)[[2]][cols] == ""){
transitions$transitions[[level_n]][,cols] = 0
}
}
}
您可以使用 lapply
将列名称为空字符串的每一列的值设置为零。那么当你 运行 transition$render()
时,空的转换就会消失。一开始我想,这可以简单地按如下方式完成:
# Set transitions table columns with a blank name to zeros
transitions$transitions = lapply(transitions$transitions, function(tab) {
tab[ , which(colnames(tab)=="")] = 0
tab
})
但是,lapply
从输出列表中删除了 "transitions" 属性,导致错误(如果有人知道解决这个问题的方法,请告诉我)。因此,我将更新后的列表保存在名为 tmp
的临时对象中,恢复 "transitions" 属性,然后重置 transitions$transitions
:
的值
# Set transitions table columns with a blank name to zeros
tmp = lapply(transitions$transitions, function(tab) {
tab[ , which(colnames(tab)=="")] = 0
tab
})
# Restore "transition" attribute
attributes(tmp)$transitions = TRUE
# Set transitions to the new values we just created
transitions$transitions = tmp
当我处理这个问题时,我想知道空白过渡值应该发生什么。上图似乎具有误导性,因为它似乎表明第二次迭代的所有 c
值都变成了 d
,而第二次迭代的所有 d
值都变成了 e
.但实际上,13 个值中有 5 个进入 ""
(即空字符串)。他们就这样消失了吗?如果是这样,第三个迭代条的总高度不应该是第一个和第二个迭代条的高度的 7/13 吗?或者尝试这样的事情,只是为了表明一些价值观已经转变为遗忘:
transitions$fill_clr[[3]] = c("white", transitions$fill_clr[[3]][-1])
transitions$render()
或者,空白实际上是否代表从第 2 次到第 3 次转换保持不变的值?如果是这种情况,那么用上一个转换中的相应值填充空白值可能会更好。这种情况的图表如下所示:
library(zoo)
# Convert empty values to NA
sequence_data[sequence_data==""] = NA
# Fill NA values with last value carried forward
sequence_data=as.data.frame(t(apply(sequence_data, 1, na.locf)))
transitions <- table(sequence_data$Seq.1, sequence_data$Seq.2) %>%
getRefClass("Transition")$new(label=c("1st Iteration", "2nd Iteration"))
transitions$box_width = 0.25;
transitions$box_label_cex = 1;
transitions$box_cex = 2;
transitions$arrow_type = "simple";
transitions$arrow_rez = 300;
table(sequence_data$Seq.2,sequence_data$Seq.3) %>% transitions$addTransitions(label = '3rd Iteration')
transitions$render()
我的数据看起来像这样:
dput(sequence_data)
的输出;
structure(list(Obs = 1:13, Seq.1 = structure(c(1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L), .Label = c("a", "b", "c"
), class = "factor"), Seq.2 = structure(c(1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("c", "d"), class = "factor"),
Seq.3 = structure(c(1L, 1L, 1L, 2L, 1L, 1L, 3L, 3L, 3L, 3L,
3L, 3L, 3L), .Label = c("", "d", "e"), class = "factor"),
Seq.4 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L,
1L, 1L, 2L), .Label = c("", "f"), class = "factor")), .Names = c("Obs",
"Seq.1", "Seq.2", "Seq.3", "Seq.4"), class = "data.frame", row.names = c(NA,
-13L))
我正在尝试获取过渡状态图。这是代码:
transitions <- table(sequence_data$Seq.1,sequence_data$Seq.2) %>%
getRefClass("Transition")$new(label=c("1st Iteration", "2nd Iteration"))
transitions$box_width = 0.25;
transitions$box_label_cex = 0.7;
transitions$arrow_type = "simple";
transitions$arrow_rez = 300;
table(sequence_data$Seq.2,sequence_data$Seq.3) %>% transitions$addTransitions(label = '3rd Iteration')
transitions$render()
这是输出:
能否从图表中删除空值,使其看起来更清晰?我尝试删除,但 table 语句需要值的长度相同。
我正在为图表使用 GMISC 包 (library(Gmisc)
)。
谢谢
这可能有点老套,但可以帮助您。基本上你手动设置转换 (transitions$transitions
) 到 0
.
transitions$transitions[[2]][1,1] = 0
transitions$transitions[[2]][2,1] = 0
transitions$render()
也许这个循环可以自动将所有值更改为0
(虽然我还没有检查大数据)
for (level_n in 1:length(transitions$transitions)){
x = transitions$transitions[[level_n]]
for (cols in 1:ncol(transitions$transitions[[level_n]])){
if (dimnames(x)[[2]][cols] == ""){
transitions$transitions[[level_n]][,cols] = 0
}
}
}
您可以使用 lapply
将列名称为空字符串的每一列的值设置为零。那么当你 运行 transition$render()
时,空的转换就会消失。一开始我想,这可以简单地按如下方式完成:
# Set transitions table columns with a blank name to zeros
transitions$transitions = lapply(transitions$transitions, function(tab) {
tab[ , which(colnames(tab)=="")] = 0
tab
})
但是,lapply
从输出列表中删除了 "transitions" 属性,导致错误(如果有人知道解决这个问题的方法,请告诉我)。因此,我将更新后的列表保存在名为 tmp
的临时对象中,恢复 "transitions" 属性,然后重置 transitions$transitions
:
# Set transitions table columns with a blank name to zeros
tmp = lapply(transitions$transitions, function(tab) {
tab[ , which(colnames(tab)=="")] = 0
tab
})
# Restore "transition" attribute
attributes(tmp)$transitions = TRUE
# Set transitions to the new values we just created
transitions$transitions = tmp
当我处理这个问题时,我想知道空白过渡值应该发生什么。上图似乎具有误导性,因为它似乎表明第二次迭代的所有 c
值都变成了 d
,而第二次迭代的所有 d
值都变成了 e
.但实际上,13 个值中有 5 个进入 ""
(即空字符串)。他们就这样消失了吗?如果是这样,第三个迭代条的总高度不应该是第一个和第二个迭代条的高度的 7/13 吗?或者尝试这样的事情,只是为了表明一些价值观已经转变为遗忘:
transitions$fill_clr[[3]] = c("white", transitions$fill_clr[[3]][-1])
transitions$render()
或者,空白实际上是否代表从第 2 次到第 3 次转换保持不变的值?如果是这种情况,那么用上一个转换中的相应值填充空白值可能会更好。这种情况的图表如下所示:
library(zoo)
# Convert empty values to NA
sequence_data[sequence_data==""] = NA
# Fill NA values with last value carried forward
sequence_data=as.data.frame(t(apply(sequence_data, 1, na.locf)))
transitions <- table(sequence_data$Seq.1, sequence_data$Seq.2) %>%
getRefClass("Transition")$new(label=c("1st Iteration", "2nd Iteration"))
transitions$box_width = 0.25;
transitions$box_label_cex = 1;
transitions$box_cex = 2;
transitions$arrow_type = "simple";
transitions$arrow_rez = 300;
table(sequence_data$Seq.2,sequence_data$Seq.3) %>% transitions$addTransitions(label = '3rd Iteration')
transitions$render()