【问题标题】:R + Data frame name as string variableR + 数据框名称作为字符串变量
【发布时间】:2016-01-20 19:07:38
【问题描述】:

我有一个数据框列表,我希望为列表中的每个数据框分配一个变量列,该列是给定数据框名称的简单字符向量。

data <- list(
    d1 = data.frame(animal = sample(c("cat","dog","bird"), 5, replace = T)),
    d2 = data.frame(animal = sample(c("cat","dog","bird"), 5, replace = T)),
    d3 = data.frame(animal = sample(c("cat","dog","bird"), 5, replace = T))
)

这产生:

> data 
$d1
  animal
1    cat
2   bird
3    cat
4    cat
5    cat

$d2
  animal
1    dog
2    cat
3    cat
4    cat
5   bird

$d3
  animal
1    cat
2    dog
3    cat
4    cat
5    cat

我想做的是创建如下内容:

> newdata 
$d1
  animal newvar
1    cat     d1
2    cat     d1
3    cat     d1
4    dog     d1
5    cat     d1

$d2
  animal newvar
1   bird     d2
2    cat     d2
3   bird     d2
4    cat     d2
5    cat     d2

$d3
  animal newvar
1   bird     d3
2   bird     d3
3    cat     d3
4    cat     d3
5   bird     d3

但我不太清楚如何实际引用数据框名称(在数据框列表中)并将其适当地转换为字符向量。

以下内容不起作用:

namefunc <- function(x) {
    x <- x %>% transform(newvar = as.character(x))
}

newdata <- namefunc(data)

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以使用Mapcbind对应'data'的list元素和'data'的names

    Map(cbind, data, newvar= names(data))
    

    【讨论】:

      【解决方案2】:
      lapply(names(data), function(d) transform(data[[d]], newvar=d))
      

      或最终:

      L <- lapply(names(data), function(d) transform(data[[d]], newvar=d))
      names(L) <- names(data)
      

      【讨论】:

        猜你喜欢
        • 2018-04-24
        • 2023-03-31
        • 2013-12-03
        • 2018-10-21
        • 1970-01-01
        • 1970-01-01
        • 2022-10-13
        • 1970-01-01
        • 2011-11-25
        相关资源
        最近更新 更多