列表列 - 创建数据框的数据框

时间:2017-10-24 15:00:43

标签: r

我想创建一个非常简单的数据帧数据框。我希望主数据框有100行,有两列。一列被称为" row"并且数字为1-100,另外两列称为" df1"和" df2"每个数据框都有一列"行"和数字1-100。我尝试过以下方法:

mydf <- data.frame(row=1:100)
for(i in 1:100){
  mydf$df1[i] <- data.frame(row=1:100)
  mydf$df2[i] <- data.frame(row=1:100)
}

但是这会创建列表而不是数据框,而列则是未命名的。我也尝试过:

mydf <- data.frame(row=1:100)
mydf <- mydf %>% mutate(df1=data.frame(row=1:100),df2=data.frame(row=1:100))

但是这会引发错误。看起来我正在做的事情不应该太困难,我做错了什么,我怎么能做到这一点?

感谢。

3 个答案:

答案 0 :(得分:2)

您可以使用replicate来实现这一目标,即

mydf$df1 <- replicate(100, mydf)
mydf$df2 <- replicate(nrow(mydf), mydf) #I used nrow here to make it more generic

答案 1 :(得分:2)

每行使用do而不是mutate

mydf <- data.frame( row = 1:100 ) %>% group_by(row) %>%
  do( df1 = data.frame(row=1:100), df2 = data.frame(row=1:100) ) %>% ungroup
# # A tibble: 100 x 3
#     row                    df1                    df2
#   <int>                 <list>                 <list>
# 1     1 <data.frame [100 x 1]> <data.frame [100 x 1]>
# 2     2 <data.frame [100 x 1]> <data.frame [100 x 1]>
# 3     3 <data.frame [100 x 1]> <data.frame [100 x 1]>
# ...

答案 2 :(得分:0)

我认为您应该使用嵌套数据框,如中所述 https://www.rdocumentation.org/packages/tidyr/versions/0.6.1/topics/nest 但是根据你的要求,你需要操作员I.

class NullArgumentException extends IllegalArgumentException {

    public NullArgumentException() {
        super("arg cannot be null");
    }
}

public class Test {

    public static void main(String[] args) {

        try {
            foo(null);
        } catch(IllegalArgumentException e) {
            // or System.out.println(e.getMessage())
            e.printStackTrace();
        }
    }

    public static void foo(Integer i) throws IllegalArgumentException {
        if(i == null) throw new NullArgumentException();
    }
}
相关问题