r-如何在for循环中合并列



我有一个小问题,当尝试使用粘贴组合列时,我组合了for循环的第一列和最后一个结果。告诉我如何组合for循环的所有结果,而不仅仅是最后一个结果?

if(i==1 | j==2){
common.res <- data.table(res[,3])
f <- data.table(paste(common.res1[,1],common.res[,]))
}

我的数据:

x1x2x3
203040
203040
203040

您可以使用tidyr::unite():在没有for循环的情况下完成此操作

library(tidyr)
res %>% unite(col = 'name_for_new_col', sep = ' ')

这将把res中的所有列粘贴在一起,并在每个元素之间留出一个空格。如果你想指定特定的列来做这件事,你可以说:

res %>% unite(col = 'name_for_new_col', x1:x3, sep = ' ')

如果您也想保留旧列,可以在unite()中指定remove = FALSE


或者,您可以使用applypaste:在基本R中执行此操作

res2 <- as.data.frame(apply(res, 1, paste, collapse = ' '))
names(res2)[1] <- 'nicer.name' #rename the single column

或者只使用pastefor loop:

df = data.frame(matrix(nrow = nrow(res), ncol = 1))
for (i in 1:nrow(res)) {
df[i,1] <- (paste(res[i,], collapse = ' '))
}

最新更新