如何在for循环中合并列?

how to merge columns in a for loop?

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

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

我的数据:

x1 x2 x3
20 30 40
20 30 40
20 30 40

将柱子固定在环中后会得到什么:

x1
20 40
20 40
20 40

我想得到的:

x1
20 30 40
20 30 40
20 30 40

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

library(tidyr)

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

这会将 res 中的所有列粘贴在一起,并在每个元素之间放置一个 space。如果您想指定特定的列来执行此操作,您可以说:

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

如果您还想保留旧列,您可以在 unite().

中指定 remove = FALSE

或者,您可以使用 applypaste:

在 base R 中执行此操作
res2 <- as.data.frame(apply(res, 1, paste, collapse = ' '))
names(res2)[1] <- 'nicer.name' #rename the single column

或者只有 paste 和一个 for loop:

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