【问题标题】:How to add elements from vector to every nth column of dataframe in R?如何将向量中的元素添加到 R 中数据帧的每第 n 列?
【发布时间】:2023-01-16 14:49:09
【问题描述】:

我有以下向量:

samples=c("bl","ra","ye","gp","dk")

我想添加到数据框

df<-data.frame(Country = "FR", Name = "Jean", A="",B="",C="",D="",E="",F="",G="",H="",I="",J="",L="",M="",N="",O="",P="",Q="",R="",S="",T="",U="",V="",W="ok",X="ok",Y="ok",Z="ok",A1="ok",B1="ok")

并给出输出

  Country Name   A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T ....
1      FR Jean         bl          ra          ye          gp          dk

目的:

  • 将向量中的元素放入已经包含一些值的数据框中。
  • 第一个元素必须在第 3 列
  • 后续元素必须在第一个元素的每 5 列中,即第 7、11、15、19 列... (4i-1)
  • 一个 for 循环,自动从第一个元素开始每隔 5 列添加元素。根据情况,我的矢量可能比我指定的长得多。将每个元素分别分配给列名会很乏味。

【问题讨论】:

    标签: r


    【解决方案1】:

    首先定义一个包含目标列位置的 target_pos 向量,然后迭代该向量以将 samples 附加到 df

    请注意,您的输入 df 和您想要的输出之间存在一些差异。例如,您的 df 中没有 K 列,但您在所需的输出中有该列。

    target_pos <- seq(5, ncol(df), 4)
    
    for (i in 1:length(target_pos)) df[, target_pos[i]] <- samples[i]
    
    df
    #>   Country Name A B  C D E F  G H I J  L M N O  P Q R S  T U V  W    X  Y  Z A1
    #> 1      FR Jean     bl       ra       ye       gp       dk     ok <NA> ok ok ok
    #>     B1
    #> 1 <NA>
    

    数据

    df<-data.frame(Country = "FR", Name = "Jean", A="",B="",C="",D="",E="",F="",G="",H="",I="",J="",L="",M="",N="",O="",P="",Q="",R="",S="",T="",U="",V="",W="ok",X="ok",Y="ok",Z="ok",A1="ok",B1="ok")
    
    samples=c("bl","ra","ye","gp","dk")
    

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 2022-07-20
      • 1970-01-01
      • 2020-06-30
      相关资源
      最近更新 更多