2015-04-17 23 views
-2

我有列表類型的數據被移入數據框,雖然它是以數據框內的列表形式存儲的。R:刪除數據框中的列表類型

代碼:(列表數據幀)

O<-lapply(res, function(x) str_extract_all(x,pattern)) 
O 
library(plyr) 
maxl <- max(sapply(O,length)) 
out <- do.call(cbind, lapply(O,function(x) x[1:maxl])) 
out <- as.data.frame(out) 

結果:O型

$text 
$text[[1]] 
[1] "qlikview" "gpa"  "access" "gpa"  "access" "access" "qlikview" "gpa"  "access" 
[10] "gpa"  

$text[[2]] 
[1] "report" "qlikview" "gpa"  "access" "qlikview" "gpa"  "access" "qlikview" "gpa"  
[10] "access" 

$text[[3]] 
[1] "qlikview" "gpa"  "access" "gpa"  "access" "access" "qlikview" "gpa"  "access" 
[10] "gpa"  

$text[[4]] 
[1] "qlikview" "gpa"  "access" "gpa"  "access" "access" "qlikview" "gpa"  "access" 
[10] "gpa"  

$text[[5]] 
[1] "report" "qlikview" "gpa"  "access" "access" "gpa"  "access" "qlikview" "gpa"  
[10] "access" "access" "gpa"  "qlikview" "gpa"  "access" "qlikview" "gpa"  "access" 

$text[[6]] 
[1] "report" "qlikview" "access" "access" "report" "qlikview" "access" "access" "gpa"  
[10] "qlikview" "access" "access" "qlikview" "access" "access" 

$text[[7]] 
[1] "report" "report" "access" "access" "report" "report" "report" "report" "report" "report" "data" 
[12] "data" "report" "access" "report" "report" 

$text[[8]] 
[1] "report" "qlikview" "gpa"  "access" "gpa"  "access" 

$text[[9]] 
[1] "report" "gpa" "access" "access" "gpa" "gpa" "gpa" "gpa" "gpa" "access" "gpa" 
[12] "gpa" "gpa" "report" 

$text[[10]] 
[1] "report" "gpa" "gpa" "access" "gpa" "access" "gpa" "access" "gpa" "gpa" "report" 
[12] "gpa" "gpa" "access" "gpa" "gpa" "gpa" "gpa" "gpa" 

dput(O$text[1:10]) 
list(c("qlikview", "gpa", "access", "gpa", "access", "access", 
"qlikview", "gpa", "access", "gpa"), c("report", "qlikview", 
"gpa", "access", "qlikview", "gpa", "access", "qlikview", "gpa", 
"access"), c("qlikview", "gpa", "access", "gpa", "access", "access", 
"qlikview", "gpa", "access", "gpa"), c("qlikview", "gpa", "access", 
"gpa", "access", "access", "qlikview", "gpa", "access", "gpa" 
), c("report", "qlikview", "gpa", "access", "access", "gpa", 
"access", "qlikview", "gpa", "access", "access", "gpa", "qlikview", 
"gpa", "access", "qlikview", "gpa", "access"), c("report", "qlikview", 
"access", "access", "report", "qlikview", "access", "access", 
"gpa", "qlikview", "access", "access", "qlikview", "access", 
"access"), c("report", "report", "access", "access", "report", 
"report", "report", "report", "report", "report", "data", "data", 
"report", "access", "report", "report"), c("report", "qlikview", 
"gpa", "access", "gpa", "access"), c("report", "gpa", "access", 
"access", "gpa", "gpa", "gpa", "gpa", "gpa", "access", "gpa", 
"gpa", "gpa", "report"), c("report", "gpa", "gpa", "access", 
"gpa", "access", "gpa", "access", "gpa", "gpa", "report", "gpa", 
"gpa", "access", "gpa", "gpa", "gpa", "gpa", "gpa")) 

預期的結果:

text 
1 qlikview, gpa, access, gpa, access, access, qlikview, gpa, access, gpa 
2 report, qlikview, gpa, access, qlikview, gpa, access, qlikview, gpa, access 
3 qlikview, gpa, access, gpa, access, access, qlikview, gpa, access, gpa 
4 qlikview, gpa, access, gpa, access, access, qlikview, gpa, access, gpa 
5 report, qlikview, gpa, access, access, gpa, access, qlikview, gpa, access, access, gpa, qlikview, gpa, access, qlikview, gpa, access 
6 report, qlikview, access, access, report, qlikview, access, access, gpa, qlikview, access, access, qlikview, access, access 
7 report, report, access, access, report, report, report, report, report, report, data, data, report, access, report, report 
8 report, qlikview, gpa, access, gpa, access 

我可以使用正則表達式這裏刪除C(「」「」「」)

+0

在那裏添加一個'paste'或'toString'來將所有東西都摺疊成單個字符串? – A5C1D2H2I1M1N2O1R2T1

+0

你可以嘗試一些線'noquote'。 –

+0

您打算如何處理您的預期結果?它看起來不理想。 – Roland

回答

0

嘗試這樣做

library('stringr') 
apply(data, 1, function(x) str_c(x$columnnane,collapse=',')) 

,其中,數據是你數據框和列名是包含列的列表。


編輯答案

out = do.call(rbind, lapply(data, function(x) str_c(x,collapse=', '))) 

,其中數據是你的列表對象

如果列表存儲在數據幀中,然後通過柱代替數據的上述這樣

out = do.call(rbind, lapply(data$columnname, function(x) str_c(x,collapse=', '))) 

它會給你這個。我希望這是你正在尋找的!

out [,1]
[1,] "qlikview, gpa, access, gpa, access, access, qlikview, gpa, access, gpa"
[2,] "report, qlikview, gpa, access, qlikview, gpa, access, qlikview, gpa, access"
[3,] "qlikview, gpa, access, gpa, access, access, qlikview, gpa, access, gpa"
[4,] "qlikview, gpa, access, gpa, access, access, qlikview, gpa, access, gpa"
[5,] "report, qlikview, gpa, access, access, gpa, access, qlikview, gpa, access, access, gpa, qlikview, gpa, access, qlikview, gpa, access" [6,] "report, qlikview, access, access, report, qlikview, access, access, gpa, qlikview, access, access, qlikview, access, access"
[7,] "report, report, access, access, report, report, report, report, report, report, data, data, report, access, report, report"
[8,] "report, qlikview, gpa, access, gpa, access"
[9,] "report, gpa, access, access, gpa, gpa, gpa, gpa, gpa, access, gpa, gpa, gpa, report"
[10,] "report, gpa, gpa, access, gpa, access, gpa, access, gpa, gpa, report, gpa, gpa, access, gpa, gpa, gpa, gpa, gpa"

+0

'錯誤:輸入到str_c應該是原子矢量' – KRU

+0

如果可能的話發佈一個可用的數據集的子集 –

+0

在問問題時總是會放置可重複的數據,這將有助於您更快得到答案!這裏是你可以看看這篇文章解釋如何解決這個問題http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

0

你可以試試這個

數據

dd <- list(c("qlikview", "gpa", "access", "gpa", "access", "access", 
"qlikview", "gpa", "access", "gpa"), c("report", "qlikview", 
"gpa", "access", "qlikview", "gpa", "access", "qlikview", "gpa", 
"access"), c("qlikview", "gpa", "access", "gpa", "access", "access", 
"qlikview", "gpa", "access", "gpa"), c("qlikview", "gpa", "access", 
"gpa", "access", "access", "qlikview", "gpa", "access", "gpa" 
), c("report", "qlikview", "gpa", "access", "access", "gpa", 
"access", "qlikview", "gpa", "access", "access", "gpa", "qlikview", 
"gpa", "access", "qlikview", "gpa", "access"), c("report", "qlikview", 
"access", "access", "report", "qlikview", "access", "access", 
"gpa", "qlikview", "access", "access", "qlikview", "access", 
"access"), c("report", "report", "access", "access", "report", 
"report", "report", "report", "report", "report", "data", "data", 
"report", "access", "report", "report"), c("report", "qlikview", 
"gpa", "access", "gpa", "access"), c("report", "gpa", "access", 
"access", "gpa", "gpa", "gpa", "gpa", "gpa", "access", "gpa", 
"gpa", "gpa", "report"), c("report", "gpa", "gpa", "access", 
"gpa", "access", "gpa", "access", "gpa", "gpa", "report", "gpa", 
          "gpa", "access", "gpa", "gpa", "gpa", "gpa", "gpa")) 

代碼

df <- data.frame(text=rep(NA, length(dd))) 
df$text <- lapply(lapply(dd, FUN = function(x) paste0(x, collapse=" ,")), FUN = noquote) 
df 
                                    text 
1                qlikview ,gpa ,access ,gpa ,access ,access ,qlikview ,gpa ,access ,gpa 
2               report ,qlikview ,gpa ,access ,qlikview ,gpa ,access ,qlikview ,gpa ,access 
3                qlikview ,gpa ,access ,gpa ,access ,access ,qlikview ,gpa ,access ,gpa 
4                qlikview ,gpa ,access ,gpa ,access ,access ,qlikview ,gpa ,access ,gpa 
5 report ,qlikview ,gpa ,access ,access ,gpa ,access ,qlikview ,gpa ,access ,access ,gpa ,qlikview ,gpa ,access ,qlikview ,gpa ,access 
6   report ,qlikview ,access ,access ,report ,qlikview ,access ,access ,gpa ,qlikview ,access ,access ,qlikview ,access ,access 
7   report ,report ,access ,access ,report ,report ,report ,report ,report ,report ,data ,data ,report ,access ,report ,report 
8                       report ,qlikview ,gpa ,access ,gpa ,access 
9             report ,gpa ,access ,access ,gpa ,gpa ,gpa ,gpa ,gpa ,access ,gpa ,gpa ,gpa ,report 
10      report ,gpa ,gpa ,access ,gpa ,access ,gpa ,access ,gpa ,gpa ,report ,gpa ,gpa ,access ,gpa ,gpa ,gpa ,gpa ,gpa 

這是所需的輸出。

+0

這對於'list'完美的作品,但我的問題是在數據幀中的列表類型 – KRU

+0

你能' dput'你的數據框還是它的一部分? –

+0

你可以請檢查編輯 – KRU