2016-09-07 53 views
0

您好我想創建一個列表,其中每個指數將存儲基於匹配condition.I不同的數據多有下列數據:R個不更換長度創建列表

col1 col2 col3 
500x high 9.07 
5x  low  23.6 
50x  medium 11.64 
500x high 8.24 
5x  low  35.17 
50x  medium 12.82 

我有下述R腳本:

somelist<-list() 
tempinfo<-("500x","50x","5x") 
for(k in seq(from=1,to=nrow(dataset),by=3)){ 
    for(y in 0:2){ 
     if (any(as.character(dataset[,1][k+y]) == tempinfo)) { 
      somelist[as.character(dataset[,1][k+y])]<-append(somelist[as.character(dataset[,1][k+y])],as.character(dataset[,3][k+y])) 
     } 
    } 
} 

應該給予輸出,如:

somelist 
$500x 
[1] 9.07 8.24 
$50x 
[1] 11.64 12.82 
$5x 
[1] 23.6 35.17 

卜不幸的是我得到以下錯誤: number of items to replace is not a multiple of replacement length 任何人都知道爲什麼? 謝謝

+3

您是否正在嘗試製作自己的'split'版本?也就是說,'split(數據集$ col1,數據集$ col3)' – Gregor

+0

是的,但我想將這些值存儲在基於索引的列表中以供進一步分析 – Paul85

+3

@ Paul85 - 'split'將通過分割命名每個列表組件變量的唯一值 - 在這種情況下'col3' - 我想這正是你想要的。 – thelatemail

回答

4

基本上批准的意見。 (我試圖找到一個重複的ith幾個不同的搜索和失敗,雖然我非常肯定,必須有一個。)

> dat <- read.table(text="col1 col2 col3 
+ 500x high 9.07 
+ 5x  low  23.6 
+ 50x  medium 11.64 
+ 500x high 8.24 
+ 5x  low  35.17 
+ 50x  medium 12.82", head=T) 
> split(dat$col3, dat$col1) 
$`500x` 
[1] 9.07 8.24 

$`50x` 
[1] 11.64 12.82 

$`5x` 
[1] 23.60 35.17