将单列转换为类似表格的相关矩阵

时间:2019-07-07 07:03:21

标签: r

大家好,我有兴趣以相关矩阵的形式将具有矩阵的数据框的简单列转换为相关矩阵,以便稍后应用“ for”周期向数据库提出请求

我的输入数据:

DATA
1664
1790
1678
1789
1778
1871

期望的输出量:

DATA    1664    1790    1678    1789    1778    1871
1664    1664    1790    1678    1789    1778    1871
1790    1664    1790    1678    1789    1778    1871
1678    1664    1790    1678    1789    1778    1871
1789    1664    1790    1678    1789    1778    1871
1778    1664    1790    1678    1789    1778    1871
1871    1664    1790    1678    1789    1778    1871

5 个答案:

答案 0 :(得分:2)

您可以将充满单个值的list传递到作业的右侧,它将填充所有行。即:

dat[as.character(dat$DATA)] <- as.list(dat$DATA)
dat
#  DATA 1664 1790 1678 1789 1778 1871
#1 1664 1664 1790 1678 1789 1778 1871
#2 1790 1664 1790 1678 1789 1778 1871
#3 1678 1664 1790 1678 1789 1778 1871
#4 1789 1664 1790 1678 1789 1778 1871
#5 1778 1664 1790 1678 1789 1778 1871
#6 1871 1664 1790 1678 1789 1778 1871

dat所在的位置:

dat <- read.table(text="DATA
1664
1790
1678
1789
1778
1871", header=TRUE)

答案 1 :(得分:0)

使用for循环在base R中的解决方案:

DATA <-c(1664, 1790, 1678, 1789, 1778, 1871)
list <- list()

for(i in 1:length(DATA)){
  list[[i]] <- rep(DATA[i], length(DATA))
}

df <- as.data.frame(do.call(cbind, list))

答案 2 :(得分:0)

转置并重复行:

<div id="app">
      <v-app id="inspire">
        <v-container fluid>
          <v-checkbox v-model="checkbox1"
                        v-bind:false-value="0"
                        v-bind:true-value="1"
                      :label="`Checkbox 1: ${checkbox1.toString()}`"></v-checkbox>
          <v-checkbox v-model="checkbox2" :label="`Checkbox 2: ${checkbox2.toString()}`"></v-checkbox>
        </v-container>
      </v-app>
    </div>

new Vue({
  el: '#app',
  data () {
    return {
      checkbox1: 1,
      checkbox2: 0
    }
  }
})

输出

df <- as.data.frame(t(c(1664, 1790, 1678, 1789, 1778, 1871)))
df[rep(seq_len(nrow(df)), ncol(df)),]

答案 3 :(得分:0)

library(purrr)

data = c(1664,
         1790,
         1678,
         1789,
         1778,
         1871)

map_dfc(data,~rep(.,length(data)))

# A tibble: 6 x 6
     V1    V2    V3    V4    V5    V6
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1  1664  1790  1678  1789  1778  1871
2  1664  1790  1678  1789  1778  1871
3  1664  1790  1678  1789  1778  1871
4  1664  1790  1678  1789  1778  1871
5  1664  1790  1678  1789  1778  1871
6  1664  1790  1678  1789  1778  1871

答案 4 :(得分:0)

带有replicate

的选项
t(replicate(nrow(dat), dat$DATA))