如何循环遍历R数据帧中的列,并在每次迭代中使用列名创建新的数据帧?
我有一个R数据帧dftotal如何循环遍历R数据帧中的列,并在每次迭代中使用列名创建新的数据帧?,r,for-loop,dataframe,R,For Loop,Dataframe,我有一个R数据帧dftotal i A B C D 1 4 15 4 12 2 13 4 4 7 3 1 1 3 8 4 3 11 1 9 我想写一个循环,它遍历a、B、C、D列,每次都创建一个新的数据帧,这样我就可以为每列创建一个数据帧: dfA: 和dfB: i B 1 15 2 4 3 1 4 11 等等 我试过: List <- colnames(dftotal) List <- List[-1] for (j in leng
i A B C D
1 4 15 4 12
2 13 4 4 7
3 1 1 3 8
4 3 11 1 9
我想写一个循环,它遍历a、B、C、D列,每次都创建一个新的数据帧,这样我就可以为每列创建一个数据帧:
dfA:
和dfB:
i B
1 15
2 4
3 1
4 11
等等
我试过:
List <- colnames(dftotal)
List <- List[-1]
for (j in length(List))
{
df <- data.frame(dftotal$i,dftotal[List[j]])
assign(paste("df",List[j]), df)
}
但这只返回了列表中最后一列的数据帧。它似乎覆盖了在循环中创建的其他数据帧
df <- data.frame(dftotal$i,dftotal[List[1]])
assign(paste("df",List[1]), df)
当我手动逐列运行它时,效果很好
我做错了什么 记录在案-回答你做错了什么的问题: 对于长项选手j 宁可 为j在1:lengthList 假设下面这些是向量
df Try lapplydf[-1],functionicbinddf$i,ior lapplysapplyiris,functionx data.framex,cbind@Sotos在循环内部或外部?不要将单独的data.frames分配到全局环境中。将它们放在一个列表中,就像前面的注释所示。循环中没有任何地方。靠它自己谢谢。我现在也明白了为什么这是个坏主意:-
df <- data.frame(dftotal$i,dftotal[List[1]])
assign(paste("df",List[1]), df)
i <- c(1,2,3,4)
A <- c(4,13,1,3)
B <- c(15,4,1,11)
C <- c(4,4,3,1)
D <- c(12,7,8,9)
MM <- cbind(i,A,B,C,D)
MM <- data.frame(MM)
List <- colnames(MM)
List <- List [-1]
for (j in 1:length(List)) {