我想创建一个非常简单的数据帧数据框。我希望主数据框有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))
但是这会引发错误。看起来我正在做的事情不应该太困难,我做错了什么,我怎么能做到这一点?
感谢。
答案 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();
}
}