![](/img/trans.png)
[英]How to loop through the columns in an R data frame and View/ Load data frame using the Row name in each iteration?
[英]How to loop through the columns in an R data frame and create a new data frame using the column name in each iteration?
我有一個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:
i A
1 4
2 13
3 1
4 3
和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)
當我手動逐列運行它時,效果很好。
我究竟做錯了什么?
作記錄-回答您做錯了什么問題:
for (j in length(List))
應該是
for (j in 1:length(List))
假設這些是向量
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)
所有i,A,B,C,D的數據幀
MM <- cbind(i,A,B,C,D)
MM <- data.frame(MM)
List <- colnames(MM)
List <- List [-1]
創建特定數據幀df1,df2,df3和df4的功能
for (j in 1:length(List)) {
df <- data.frame(MM$i,MM[,List[j]])
colnames(df) <- c("i", paste("df",List[j], sep = ""))
assign(paste("df",j, sep = ""),df)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.