我正在尝试在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
但是,在上面的代码中,我不断获得“Cluster 1:opportunity”“Cluster 1:learning”“Cluster 1:career”。
以下代码效果很好(输出是 - 群集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")
}
答案 0 :(得分:1)
最好在这里使用lapply
:
例如:
res <- lapply(1:k,function(i) {
cat(paste("Cluster ", i, ": ", sep=""))
s <- sort(kmeansResult$centers[i,], decreasing=T)
names(s)[1:3]
})
答案 1 :(得分:0)
来自?paste
:
如果参数是向量,则它们是逐个连接的,以给出字符向量结果。矢量参数根据需要进行回收,零长度参数被循环到“”。
...
如果为折叠指定了值,则结果中的值将连接成单个字符串,其中元素由折叠值分隔。
所以你想在你的字符串中添加collapse = " "
。具体来说,就像这样(你也不需要print
)。
result[[i]] <- paste0("Cluster ", i, ": ", paste(names(s)[1:3], collapse=" "))