Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将一列粘贴到数据帧中的每一列_R - Fatal编程技术网

R 将一列粘贴到数据帧中的每一列

R 将一列粘贴到数据帧中的每一列,r,R,我有很多列,我需要将第一列粘贴到其他每一列中。它看起来像这样,除了实际的单词而不是字母,还有几百列 TEST0 TEST1 TEST2 TEST3 TEST4 1 Q1: AA AA AA AA AA AA BB BB BB 2 Q2: 3 Q3: BB BB B

我有很多列,我需要将第一列粘贴到其他每一列中。它看起来像这样,除了实际的单词而不是字母,还有几百列

           TEST0     TEST1     TEST2     TEST3     TEST4
       1   Q1:       AA AA AA  AA AA AA            BB BB BB
       2   Q2:                                        
       3   Q3:       BB BB BB  CC CC CC  CC CC CC  CC CC CC 
       4   Q4:       DD DD DD            DD DD DD  DD DD DD
我可以将第一列粘贴到另一列中,一次粘贴一列,具体操作如下:

    paste(test[,2],test[,3])
   [1] "Q1: AA AA AA"  "Q2: "          "Q3: BB BB BB"  "Q4: DD DD DD "

    paste(test[,2],test[,4])
   [1] "Q1: AA AA AA " "Q2: "          "Q3: CC CC CC " "Q4: "    

但是有没有一种方法可以同时处理多个列呢?谢谢

这里有一种使用
dplyr
的方法。首先创建自己的粘贴功能:

df <- data.frame(A = LETTERS, B = 1:26, C = 1:26)
head(df)

   A  B  C
1  A  1  1
2  B  2  2
3  C  3  3
4  D  4  4
5  E  5  5

pasteA <- function(., x) paste0(df$A,.)
df %>%
  mutate_if(.predicate = c(F, rep(T, ncol(df)-1)), .funs = list(pasteA))

   A   B   C
1  A  A1  A1
2  B  B2  B2
3  C  C3  C3
4  D  D4  D4
5  E  E5  E5

df这是一个基本解决方案,带有
for
循环。对于每个目标列,
粘贴
它的第一列

df <- data.frame(a = letters[1:5], b = 1:5, c = 5:1)

for (i in 2:length(df)) {
    df[[i]] <- paste(df[[1]], df[[i]], sep = ": ")
}

对于这种情况,{dplyr}令人惊讶地令人费解。一个更简单的解决方案是使用
lappy
(这是因为
data.frame
s是列的列表):


您可以尝试使用
循环
结构。交叉发布:
  a    b    c
1 a a: 1 a: 5
2 b b: 2 b: 4
3 c c: 3 c: 3
4 d d: 4 d: 2
5 e e: 5 e: 1
as.data.frame(lapply(test[-1], function (x) paste(test[[1]], x)))