我在嘗試在 R 中撰寫 for 回圈時遇到問題。我有一個 16 列和 94 行的資料框,我想回圈遍歷,在一個資料框中選擇第 1 列和第 2 列,然后是第 1 列 第 3 列等,所以我最終得到包含 2 列的 16 個資料幀,全部寫入單獨的 .csv 檔案
TwoB<- read.csv("data.csv", header=F)
list<- lapply(1:nX, function(x) NULL)
nX <- ncol(TwoB)
for(i in 1:ncol(TwoB)){
list[[i]]<-subset(TwoB,
select=c(1, i 1))
}
這會產生一個錯誤:
Error in `[.data.frame`(x, r, vars, drop = drop):
undefined columns selected
我不太確定如何對此進行編碼,并且顯然還沒有完全掌握回圈,因此將不勝感激!
uj5u.com熱心網友回復:
當您回圈遍歷 16 列并最終嘗試選擇 16 1 哪個列索引不存在時,該錯誤很容易解釋。您可能可以改為回圈使用 nX-1,但我認為您嘗試實作的目標可以做得更優雅。
TwoB<- read.csv("data.csv", header=F)
library("data.table")
setDT(TwoB)
nX <- ncol(TwoB)
# example to directly write your files
lapply(2:nX, function(col_index) {
fwrite(TwoB[, c(1, ..col_index)], file = paste0("col1_col", col_index, ".csv"))
})
# example to store the new data.tables in a list
list_of_two_column_tables <- lapply(2:nX, function(col_index) {
TwoB[, c(1, ..col_index)]
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324566.html
上一篇:合并具有不同列的資料框
