1

我正在尝试在 R 中获得以下输出。

例如:集群 1:机会职业学习

result <- vector("list",k)
for (i in 1:k) {
    s <- sort(kmeansResult$centers[i,], decreasing=T)
    result[[i]] <- print(paste("Cluster ", i, ": ", sep="", names(s)[1:3]))
}
result

但是,在我上面的代码中,我不断得到“集群 1:机会”“集群 1:学习”“集群 1:职业”。

以下代码运行良好(输出为 -集群 1:机会学习职业),但我需要将输出分配给一个变量(可能是一个列表?)以打印到 HTML 文件中。如果我这样做,如何将整个 for 循环的输出分配给变量?

for (i in 1:k) {
    cat(paste("Cluster ", i, ": ", sep=""))
    s <- sort(kmeansResult$centers[i,], decreasing=T)
    cat(names(s)[1:3], "\n")
}
4

2 回答 2

1

最好在lapply这里使用:

  • 没有副作用
  • 循环前无需预先分配

例如:

res <- lapply(1:k,function(i) {
    cat(paste("Cluster ", i, ": ", sep=""))
    s <- sort(kmeansResult$centers[i,], decreasing=T)
    names(s)[1:3]
})
于 2013-06-05T08:23:22.373 回答
0

来自?paste

如果参数是向量,则将它们逐项连接起来以给出字符向量结果。向量参数根据需要回收,零长度参数回收到“”。

...

如果为 collapse 指定了一个值,则结果中的值将连接成一个字符串,其中元素由 collapse 的值分隔。

所以你想collapse = " "在你的字符串修改中添加某个地方。具体来说,像这样(你也不需要print)。

result[[i]] <- paste0("Cluster ", i, ": ", paste(names(s)[1:3], collapse=" "))
于 2013-06-05T08:22:31.567 回答