2015-09-25 105 views
0

我有一個數據框,包含如下所示的記錄。該數據幀的一個典型的行,DF [1,]看起來如下將數據框中的行轉換爲r列表中的列表

84745,"F",70,7,"Single",2,"N",4,9,1,1,3,4,4,"2 day","<120 and <80",0,8,0,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1 

我想將其轉換成像MYVAR可變下面是以下類型

myvar = list(list(84745,"F",70,7,"Single",2,"N",4,9,1,1,3,4,4,"2 day","<120 and <80",0,8,0,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1)) 

我曾嘗試的執行以下操作,但無法將其轉換爲列表清單。

myvar <- as.list(as.list(as.data.frame(t(df[1,])))) 

我該怎麼做?

編輯:我試過myvar = list(unclass(df [14,]))。但是由於輸出myvar的格式稍有不同,所以調用失敗。原始行代碼

[[1]] 
[[1]][[1]] 
[1] 21408 

[[1]][[2]] 
[1] "M" 

[[1]][[3]] 
[1] 69 

[[1]][[4]] 
[1] 3 

[[1]][[5]] 
[1] "Widowed" 

MYVAR的格式=列表

格式(unclass(DF [14,]))

[[1]] 
[[1]]$ID 
[1] "21408" 

[[1]]$GenderCD 
[1] "M" 

[[1]]$Age 
[1] "69" 

[[1]]$LOS 
[1] "3" 

[[1]]$MaritalStatus 
[1] "Widowed" 
+0

你需要什麼清單列表?這可能有助於找到一個好的解決方案。 – theWanderer4865

+0

@ theWanderer4865,它用於測試部署在azure上的Web服務,該服務預計輸入列表爲列表 – PepperBoy

+0

編輯表明您沒有提供正確的示例。使用'unclass'不會強迫數據框中的一行成爲全部相同的類。這是使用't'的東西,正如我的答案中所指出的那樣。 –

回答

3

嘗試這種情況:

myvar <- list(unclass(df[1,]) 

說明:df [1,]實際上仍然是一個列表,但具有「data.frame」類屬性。如果你刪除它的類,它現在只是一個普通的列表。當你進行t(df[1,]-操作時,你強制該行成爲一個列向量,在數據幀中所需的所有列都是發生強迫的傳入類。

如果目標是行由行的解決方案,然後做到這一點:

myvar <- list() 
for (i in seq(nrow(df))) { myvar[[i]] <- unclass(df[i,])} 

如果它也必須是未命名的,我相當懷疑,但我想這是可能的,則:

myvar <- list() 
for (i in seq(nrow(df))) { myvar[[i]] <- unname(unclass(df[i,])) } 

我測試了unname策略:

> unname(unclass(data.frame(a=345,b="tyt")[1,])) 
[[1]] 
[1] 345 

[[2]] 
[1] tyt 
Levels: tyt 

attr(,"row.names") 
[1] 1 
+0

請參閱上面的修改。 – PepperBoy

+0

除非您在取消對象上存在問題,否則我不會看到問題。 –

+0

將列名設置爲空 –