📜  在 R 中重复 N 次 DataFrame 行

📅  最后修改于: 2022-05-13 01:55:22.120000             🧑  作者: Mango

在 R 中重复 N 次 DataFrame 行

在本文中,我们将讨论如何使用 R 编程语言将 Dataframe 的行重复给定次数。

方法一:使用replicate()方法

声明复制因子以定义重复数据帧行的次数。 R 中的 do.call() 方法用于执行 R函数,同时将各种参数作为输入。 rbind() 方法作为该方法的第一个参数将数据帧组合在一起。第二个参数是replicate() 方法,用于创建与复制因子相同次数的数据帧行的多个副本。

示例:重复行 n 次



R
# creating a data frame
data_frame <- data.frame(col1 = c(6:8),
                        col2 = letters[1:3],
                        col3 = c(1,4,NA))
  
print ("Original DataFrame")
  
print (data_frame)
  
# replication factor
n <- 3
  
data_frame_mod <- do.call("rbind", replicate(
  n, data_frame, simplify = FALSE))
  
print ("Modified DataFrame")
  
print(data_frame_mod)


R
library("purrr")
  
# creating a data frame
data_frame <- data.frame(col1 = c(6:8),
                        col2 = letters[1:3],
                        col3 = c(1,4,NA))
   
print ("Original DataFrame")
print (data_frame)
  
# replication factor
n <- 2
data_frame_mod <- purrr::map_dfr(seq_len(n), ~data_frame)
  
print ("Modified DataFrame")
print(data_frame_mod)


R
# creating a data frame
data_frame <- data.frame(col1 = c(6:8),
                        col2 = letters[1:3],
                        col3 = c(1,4,NA))
  
print ("Original DataFrame")
print (data_frame)
  
# replication factor
n <- 3
data_frame_mod <- data_frame[rep(seq_len(nrow(data_frame)), n), ]
  
print ("Modified DataFrame")
print(data_frame_mod)


输出

[1] "Original DataFrame"
col1 col2 col3
1    6    a    1
2    7    b    4
3    8    c   NA
[1] "Modified DataFrame"
col1 col2 col3
1    6    a    1
2    7    b    4
3    8    c   NA
4    6    a    1
5    7    b    4
6    8    c   NA
7    6    a    1
8    7    b    4
9    8    c   NA

方法二:使用purrr包

R 中的 purr 包用于简化函数和向量的功能和工作。可以使用以下命令将软件包安装到工作空间中:

install.packages("purrr")

R 中的 seq_len() 方法用于创建一个序列,将一个整数值作为输入,然后生成一个从 1 开始到指定整数的数字序列,步长等于 1。

句法:

vec <- seq_len(number)

R中purrr的map_dfr()函数用于创建行追加形成的数据框。它用于行绑定。

句法:

map_dfr(vec, ~data-frame)

示例:重复行 n 次



电阻

library("purrr")
  
# creating a data frame
data_frame <- data.frame(col1 = c(6:8),
                        col2 = letters[1:3],
                        col3 = c(1,4,NA))
   
print ("Original DataFrame")
print (data_frame)
  
# replication factor
n <- 2
data_frame_mod <- purrr::map_dfr(seq_len(n), ~data_frame)
  
print ("Modified DataFrame")
print(data_frame_mod)

输出

[1] "Original DataFrame"
col1 col2 col3
1    6    a    1
2    7    b    4
3    8    c   NA
[1] "Modified DataFrame"
col1 col2 col3
1    6    a    1
2    7    b    4
3    8    c   NA
4    6    a    1
5    7    b    4
6    8    c   NA

方法 3:使用rep()方法

R 中的 nrow() 方法用于确定数据帧的行数。

句法:

nrow(data-frame)

然后使用前面方法中描述的 seq_len() 方法生成向量序列。接下来是应用 rep() 方法,该方法用于将数值复制指定次数。第一个参数是由 seq_len() 方法生成的向量,n 是复制因子。

句法:

rep(vec, n)

数据框索引用于将生成的行附加到原始数据框行并存储为修改后的数据框。

示例:重复行 n 次

电阻

# creating a data frame
data_frame <- data.frame(col1 = c(6:8),
                        col2 = letters[1:3],
                        col3 = c(1,4,NA))
  
print ("Original DataFrame")
print (data_frame)
  
# replication factor
n <- 3
data_frame_mod <- data_frame[rep(seq_len(nrow(data_frame)), n), ]
  
print ("Modified DataFrame")
print(data_frame_mod)

输出

[1] "Original DataFrame"
col1 col2 col3
1    6    a    1
2    7    b    4
3    8    c   NA
[1] "Modified DataFrame"
col1 col2 col3
1      6    a    1
2      7    b    4
3      8    c   NA
1.1    6    a    1
2.1    7    b    4
3.1    8    c   NA
1.2    6    a    1
2.2    7    b    4
3.2    8    c   NA