我刚刚使用assign函数在循环中创建了10个变量:
#Original.data.frame is a 10X5 data frame.
#table is a table of the combinations of Col.nums where r=2
Col.nums<- c(1:5)
for(i in 1:ncol(data.frame)){
name<- paste("Name.object.",i, sep = "")
Boolean<- Col.nums %in% table[,i]
assign(name,expand.grid(Original.data.frame[Boolean]))
}
我现在想添加创建另一个对象(Name.object.total.i),其中i是每次迭代。
我的问题是:有没有一种方法可以在每次迭代中索引名称,以便能够在其上运行rowSums函数?
编辑: 基本上我想补充一下:
name$row.sums<- rowSum(name[1:2])
到该循环结束但名称被name的内容替换(在循环的第一行中定义)。
为了可视化,上面的循环产生10个对象,每个对象是10x5数据帧子集的组合。示例子集:
Cost.1 Cost.2
1 9104.014 26118.75
2 10901.258 26118.75
3 11952.579 26118.75
4 12698.503 26118.75
5 13277.086 26118.75
6 13749.823 26118.75
7 14149.517 26118.75
我期望的输出是如上所述的10个表,其中一个额外的列具有前两行的总和。希望能让它更清晰!
答案 0 :(得分:0)
这是你在找什么?
df <- data.frame(runif(10),runif(10),runif(10),runif(10),runif(10))
names(df) <- sprintf("Col.%d",1:ncol(df))
colnums1 <- 1:3
colnums2 <- 4:5
df$cost.1 <- rowSums(df[,colnums1])
df$cost.2 <- rowSums(df[,colnums2])
产生这个:
> df
Col.1 Col.2 Col.3 Col.4 Col.5 cost.1 cost.2
1 0.02554691 0.0348292 0.2318146 0.1358425 0.9466410 0.2921907 1.0824835
2 0.58132588 0.7876859 0.7916831 0.7257976 0.6240524 2.1606948 1.3498500
3 0.29918389 0.7582891 0.9910775 0.1924936 0.5182367 2.0485505 0.7107303
4 0.74494794 0.8174732 0.3195831 0.7058671 0.4047919 1.8820042 1.1106590
5 0.52303788 0.1036358 0.8388999 0.8052366 0.1312974 1.4655735 0.9365340
6 0.20339176 0.5381387 0.4736697 0.1199182 0.7620207 1.2152002 0.8819390
7 0.42020501 0.3035775 0.3269214 0.1702709 0.5577061 1.0507039 0.7279769
8 0.27012667 0.8610641 0.8194125 0.3870223 0.2208947 1.9506033 0.6079170
9 0.04770033 0.8950735 0.1927350 0.8565112 0.4924964 1.1355088 1.3490075
10 0.99183198 0.8061123 0.5915283 0.9464604 0.8511332 2.3894725 1.7975936
>