d <- data.frame(stringsAsFactors=F)
for (i in 1:ncol(data)) { d <- cbind(d,data[,i])}
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 0, 132680
爲什麼我得到上面的錯誤?在for循環中對data.frame()使用cbind()時發生R錯誤
d <- data.frame(stringsAsFactors=F)
for (i in 1:ncol(data)) { d <- cbind(d,data[,i])}
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 0, 132680
爲什麼我得到上面的錯誤?在for循環中對data.frame()使用cbind()時發生R錯誤
也許出於R的精確原因告訴你它出錯了:你試圖cbind
的兩個項目在一起有不同的行數。
您的數據幀d
是emtpy,因此有0行。顯然你的數據框data
(你向我們提供了零信息,順便說一下)有132680行。
可能有更好的方法來做你正在嘗試的東西(cbind
for循環中的ing列往往不是非常理想的),但很難提出一個沒有更多細節的解決方案。
可以根據上面的內容破解解決方案,但可能不想。你的目標是什麼?
d <- data.frame(matrix(ncol=0,nrow=5),stringsAsFactors=FALSE)
set.seed(101)
dat <- matrix(sample(LETTERS,replace=TRUE,size=10),ncol=2)
for (i in 1:ncol(dat)) { d <- cbind(d,dat[,i])}
d2 <- as.data.frame(dat,stringsAsFactors=FALSE)
在該特定示例dat
是character
的矩陣; d
是有兩個factor
列的數據幀(注是stringsAsFactors=FALSE
不不設置數據幀的屬性,所以你以後的cbind()
電話誘導轉化爲因素反正!);和d2
也許是(???)你想要的東西,轉換成數據幀中的原始數據集...
> str(dat)
chr [1:5, 1:2] "J" "B" "S" "R" "G" "H" "P" "I" "Q" "O"
> str(d)
'data.frame': 5 obs. of 2 variables:
$ dat[, i]: Factor w/ 5 levels "B","G","J","R",..: 3 1 5 4 2
$ dat[, i]: Factor w/ 5 levels "H","I","O","P",..: 1 4 2 5 3
> str(d2)
'data.frame': 5 obs. of 2 variables:
$ V1: chr "J" "B" "S" "R" ...
$ V2: chr "H" "P" "I" "Q" ...
S /往往不是非常最佳/往往是一個可怕的想法 – 2012-03-29 19:43:25
我的想法是,提取和重新-combine現有數據框的列特定purpose.Eg:我覺得data.frame(的列)是從read.csv()語句進口的結果,有時日期列讀取作爲人物類。另一個原因是,我只需要從read.csv語句創建的data.frame()中的幾列。我沒有意識到在for循環之前初始化的data.frame()需要填充一個列向量,其行長等於任何解析爲cbind()的對象的行長 – Vni 2012-03-30 14:59:53