通过考虑 r (1) 中的分组 Q 矩阵来操纵字符向量
Manipulating a character vector by considering a grouping Q-matrix in r (1)
我正在尝试编写基于 Group
变量的代码,item.map
具有项目信息,其中包括一个 q 矩阵,显示哪个项目与哪个组相关联。
Group <- c(1,2)
item.map <- data.frame(
item.id = c(21,41,61,72),
group.1 = c(1,1,1,0),
group.2 = c(0,1,0,1)
)
> item.map
item.id group.1 group.2
1 21 1 0
2 41 1 1
3 61 1 0
4 72 0 1
在此 item.map
中,group.1 有 3 个项目,而 group.2 有两个项目。使用此 item.map 我想在下面的代码块中分配这些项目,但我无法插入 item.map
信息。
OUTPUT <- as.data.frame(c())
for(j in 1:length(Group)) {
output <- c(paste0("Group G",unique(Group)[j],":"),
paste0("Items = ",paste0(item.map$item.id, collapse=", "), ";"), #Items
paste0(paste0("Codes(", item.map$item.id, ") = 0(0), 1(1)",collapse="; ", sep=""),";"), #Codes
paste0(paste("Model(", item.map$item.id, ") = 2PL",collapse="; ", sep=""),";"))
OUTPUT <- c(OUTPUT, output)
}
> OUTPUT
[1] "Group G1:"
[1] "Items = 21, 41, 61, 72;"
[1] "Codes(21) = 0(0), 1(1); Codes(41) = 0(0), 1(1); Codes(61) = 0(0), 1(1); Codes(72) = 0(0), 1(1);"
[1] "Model(21) = 2PL; Model(41) = 2PL; Model(61) = 2PL; Model(72) = 2PL;"
[1] "Group G2:"
[1] "Items = 21, 41, 61, 72;"
[1] "Codes(21) = 0(0), 1(1); Codes(41) = 0(0), 1(1); Codes(61) = 0(0), 1(1); Codes(72) = 0(0), 1(1);"
[1] "Model(21) = 2PL; Model(41) = 2PL; Model(61) = 2PL; Model(72) = 2PL;"
因此,在所需的输出中,Group 1
不应包含项目 72
并且组 2 不应在分组块中包含项目 21
和 61
信息。
The desired output is:
> OUTPUT
[1] "Group G1:"
[1] "Items = 21, 41, 61;"
[1] "Codes(21) = 0(0), 1(1); Codes(41) = 0(0), 1(1); Codes(61) = 0(0), 1(1);"
[1] "Model(21) = 2PL; Model(41) = 2PL; Model(61) = 2PL;"
[1] "Group G2:"
[1] "Items = 41, 72;"
[1] "Codes(41) = 0(0), 1(1); Codes(72) = 0(0), 1(1);"
[1] "Model(41) = 2PL; Model(72) = 2PL;"
有人有什么想法吗?
谢谢
这里,我们需要根据'group'列做子集(添加as.logical(item.map[[paste0("group.", j)]])
)
OUTPUT <- c()
for(j in 1:length(Group)) {
tmp <- item.map$item.id[as.logical(item.map[[paste0("group.", j)]])]
output <- c(paste0("Group G",unique(Group)[j],":"),
paste0("Items = ",
paste0(tmp, collapse=", "), ";"), #Items
paste0(paste0("Codes(", tmp, ") = 0(0), 1(1)",
collapse="; ", sep=""),";"), #Codes
paste0(paste("Model(", tmp, ") = 2PL",collapse="; ", sep=""),";"))
OUTPUT <- c(OUTPUT, output)
}
我正在尝试编写基于 Group
变量的代码,item.map
具有项目信息,其中包括一个 q 矩阵,显示哪个项目与哪个组相关联。
Group <- c(1,2)
item.map <- data.frame(
item.id = c(21,41,61,72),
group.1 = c(1,1,1,0),
group.2 = c(0,1,0,1)
)
> item.map
item.id group.1 group.2
1 21 1 0
2 41 1 1
3 61 1 0
4 72 0 1
在此 item.map
中,group.1 有 3 个项目,而 group.2 有两个项目。使用此 item.map 我想在下面的代码块中分配这些项目,但我无法插入 item.map
信息。
OUTPUT <- as.data.frame(c())
for(j in 1:length(Group)) {
output <- c(paste0("Group G",unique(Group)[j],":"),
paste0("Items = ",paste0(item.map$item.id, collapse=", "), ";"), #Items
paste0(paste0("Codes(", item.map$item.id, ") = 0(0), 1(1)",collapse="; ", sep=""),";"), #Codes
paste0(paste("Model(", item.map$item.id, ") = 2PL",collapse="; ", sep=""),";"))
OUTPUT <- c(OUTPUT, output)
}
> OUTPUT
[1] "Group G1:"
[1] "Items = 21, 41, 61, 72;"
[1] "Codes(21) = 0(0), 1(1); Codes(41) = 0(0), 1(1); Codes(61) = 0(0), 1(1); Codes(72) = 0(0), 1(1);"
[1] "Model(21) = 2PL; Model(41) = 2PL; Model(61) = 2PL; Model(72) = 2PL;"
[1] "Group G2:"
[1] "Items = 21, 41, 61, 72;"
[1] "Codes(21) = 0(0), 1(1); Codes(41) = 0(0), 1(1); Codes(61) = 0(0), 1(1); Codes(72) = 0(0), 1(1);"
[1] "Model(21) = 2PL; Model(41) = 2PL; Model(61) = 2PL; Model(72) = 2PL;"
因此,在所需的输出中,Group 1
不应包含项目 72
并且组 2 不应在分组块中包含项目 21
和 61
信息。
The desired output is:
> OUTPUT
[1] "Group G1:"
[1] "Items = 21, 41, 61;"
[1] "Codes(21) = 0(0), 1(1); Codes(41) = 0(0), 1(1); Codes(61) = 0(0), 1(1);"
[1] "Model(21) = 2PL; Model(41) = 2PL; Model(61) = 2PL;"
[1] "Group G2:"
[1] "Items = 41, 72;"
[1] "Codes(41) = 0(0), 1(1); Codes(72) = 0(0), 1(1);"
[1] "Model(41) = 2PL; Model(72) = 2PL;"
有人有什么想法吗? 谢谢
这里,我们需要根据'group'列做子集(添加as.logical(item.map[[paste0("group.", j)]])
)
OUTPUT <- c()
for(j in 1:length(Group)) {
tmp <- item.map$item.id[as.logical(item.map[[paste0("group.", j)]])]
output <- c(paste0("Group G",unique(Group)[j],":"),
paste0("Items = ",
paste0(tmp, collapse=", "), ";"), #Items
paste0(paste0("Codes(", tmp, ") = 0(0), 1(1)",
collapse="; ", sep=""),";"), #Codes
paste0(paste("Model(", tmp, ") = 2PL",collapse="; ", sep=""),";"))
OUTPUT <- c(OUTPUT, output)
}