📜  将列表转换为 R 中具有特定列名的数据框

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

将列表转换为 R 中具有特定列名的数据框

列表包含不同类型的对象作为其组件。组件可能属于不同的数据类型或不同的维度。 Vector 可以是列表的有用组件,并且可以轻松映射为数据帧的行或列。数据框中的每一列都使用唯一的名称进行引用,该名称可以等同于列表的组件名称或显式分配。在本文中,我们将讨论如何在 R 编程语言中将列表转换为具有特定列名的数据框。

以行的形式转换列表数据

do.call()方法中的R的构建和执行从一个名称或函数和的函数调用期间被传递的参数的列表的函数调用。

rbind() 方法在此函数调用期间用作乐趣,它将列表的传递元素绑定为数据帧的行。行根据列表的相应组件命名。因此,do.call() 方法的参数是列表对象。可以使用 R 中的 colnames() 方法修改列名,该方法将列名分配给指定的向量。如果列名向量的长度较小,则将 NA 指定为相应的列名。列名保留在原始数据框对象中。数据框中的列数等于列表中每个组件的大小。



do.call ( rbind , list)

as.data.frame() 方法用于将对象映射到由行和列组成的数据框。

R
# declaring a list object
lst_obj <- list(row1 = 1 : 5,
                row2 = LETTERS[1 : 5],
                row3 = FALSE)
  
print ("Original List")
print (lst_obj)
  
# binding columns together
df <- do.call(rbind, lst_obj)
print ("Original dataframe")
  
# converting to a dataframe
data_frame <- as.data.frame(df)
print (data_frame)
  
print ("Modified dataframe")
colnames(data_frame) <- c(
  "ColA", "ColB", "ColC", "ColD", "ColE")
  
print (data_frame)


R
# declaring a list object
lst_obj <- list("Row 1" = c(col1 = 'a', col2 = 'b',
                            col3 = 'c'), 
                "Row 2" = c(col1 = 'd', col2 = 'e',
                            col3 = 'f'))
  
print ("Original List")
print (lst_obj)
  
# binding columns together
df <- do.call(rbind, lst_obj)
print ("dataframe")
  
# converting to a dataframe
data_frame <- as.data.frame(df)
print (data_frame)


R
# declaring a list object
lst_obj <- list(col1 = 1 : 5,
                col2 = LETTERS[1 : 5],
                col3 = FALSE)
  
print ("Original List")
print (lst_obj)
  
# binding columns together
df <- do.call(cbind, lst_obj)
print ("dataframe")
  
# converting to a dataframe
as.data.frame(df)


输出:

[1] "Original List"
$col1
[1] 1 2 3 4 5

$col2
[1] "A" "B" "C" "D" "E"

$col3
[1] FALSE
[1] "Original dataframe"
        V1    V2    V3    V4    V5
row1     1     2     3     4     5
row2     A     B     C     D     E
row3 FALSE FALSE FALSE FALSE FALSE

[1] "Modified dataframe"
     ColA  ColB  ColC  ColD  ColE
row1     1     2     3     4     5
row2     A     B     C     D     E
row3 FALSE FALSE FALSE FALSE FALSE

列名也可以根据列表对象内元素的命名分配给数据框。即使为任一矢量分量分配了名称,也会分配命名。

电阻

# declaring a list object
lst_obj <- list("Row 1" = c(col1 = 'a', col2 = 'b',
                            col3 = 'c'), 
                "Row 2" = c(col1 = 'd', col2 = 'e',
                            col3 = 'f'))
  
print ("Original List")
print (lst_obj)
  
# binding columns together
df <- do.call(rbind, lst_obj)
print ("dataframe")
  
# converting to a dataframe
data_frame <- as.data.frame(df)
print (data_frame)

输出:

[1] "Original List"
$`Row 1`
col1 col2 col3
"a"  "b"  "c"

$`Row 2`
col1 col2 col3
"d"  "e"  "f"

[1] "dataframe"
     col1 col2 col3
Row 1    a    b    c
Row 2    d    e    f

以列的形式转换列表数据

可以使用 cbind() 和 do.call() 方法来完成。

do.call ( cbind , list)

维护以下属性:

  • 分配给列表组件的名称成为列名称,可以使用 colnames() 方法修改。
  • 总行数等于组件的长度。
  • 行名称映射到行号。

代码:

电阻

# declaring a list object
lst_obj <- list(col1 = 1 : 5,
                col2 = LETTERS[1 : 5],
                col3 = FALSE)
  
print ("Original List")
print (lst_obj)
  
# binding columns together
df <- do.call(cbind, lst_obj)
print ("dataframe")
  
# converting to a dataframe
as.data.frame(df)

输出

[1] "Original List"
$col1
[1] 1 2 3 4 5

$col2
[1] "A" "B" "C" "D" "E"

$col3
[1] FALSE


[1] "dataframe"
 col1 col2  col3
1    1    A FALSE
2    2    B FALSE
3    3    C FALSE
4    4    D FALSE
5    5    E FALSE