【问题标题】:Convert a series of given data frames into a single list by using an R function使用 R 函数将一系列给定数据帧转换为单个列表
【发布时间】:2019-02-06 12:57:23
【问题描述】:

我想使用 R 函数将一系列给定的数据帧转换为列表。

例如,我有 3 个数据框:

A <- data.frame(m = c(121, 122, 121, 122, 125, 126), r = c(0.1, 0.2, 0.3, 0.4, 0.1, 0.2),q1 = c(124, 126, 126, 122, 125, 126), q2 = c(0.1, 0.2, 0.3, 0.4, 0.1, 0.2))
B = data.frame(m = c(121, 121, 122, 125), r = c(0.1, 0.3, 0.4, 0.2), q3 = c(126, 126, 125, 126), q4 = c(0.1, 0.3, 0.4, 0.2))
C = data.frame(m = c(121, 122), r = c(0.1, 0.4), q5 = c(126, 126), q6 = c(0.1, 0.3))

我想写一个函数:

function(x){
result <- list(x)
return(result)

}

如果我的输入是A,我想得到结果list(A);如果我的输入是A, B, C,我想得到list(A, B, C)

非常感谢您的帮助。

【问题讨论】:

  • 为什么不直接使用list() 函数?

标签: r list function dataframe


【解决方案1】:

一种方法是使用... 可选参数

list_conversion <- function(x, ...) {
   list(x, ...)
}

list_conversion(A)
#[[1]]
#    m   r  q1  q2
#1 121 0.1 124 0.1
#2 122 0.2 126 0.2
#3 121 0.3 126 0.3
#4 122 0.4 122 0.4
#5 125 0.1 125 0.1
#6 126 0.2 126 0.2

list_conversion(A, B)
#[[1]]
#    m   r  q1  q2
#1 121 0.1 124 0.1
#2 122 0.2 126 0.2
#3 121 0.3 126 0.3
#4 122 0.4 122 0.4
#5 125 0.1 125 0.1
#6 126 0.2 126 0.2

#[[2]]
#    m   r  q3  q4
#1 121 0.1 126 0.1
#2 121 0.3 126 0.3
#3 122 0.4 125 0.4
#4 125 0.2 126 0.2

它适用于任意数量的参数

list_conversion(A, B, C)
#[[1]]
#    m   r  q1  q2
#1 121 0.1 124 0.1
#2 122 0.2 126 0.2
#3 121 0.3 126 0.3
#4 122 0.4 122 0.4
#5 125 0.1 125 0.1
#6 126 0.2 126 0.2

#[[2]]
#    m   r  q3  q4
#1 121 0.1 126 0.1
#2 121 0.3 126 0.3
#3 122 0.4 125 0.4
#4 125 0.2 126 0.2

#[[3]]
#    m   r  q5  q6
#1 121 0.1 126 0.1
#2 122 0.4 126 0.3

【讨论】:

    猜你喜欢
    • 2015-08-11
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 2016-08-14
    • 1970-01-01
    相关资源
    最近更新 更多