R要替换的项目数不是创建列表时替换长度的倍数

R要替换的项目数不是创建列表时替换长度的倍数,r,list,for-loop,append,R,List,For Loop,Append,您好,我正在尝试创建一个列表,其中每个索引将根据匹配条件存储不同的数据。我有以下数据: 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"

您好,我正在尝试创建一个列表,其中每个索引将根据匹配条件存储不同的数据。我有以下数据:

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]))
        }
    }
}
但不幸的是,我得到了以下错误:
要替换的项目数不是替换长度的倍数
有人知道为什么吗?
基本上是对评论的认可。(我尝试通过两次不同的搜索找到了一个副本,但都失败了,尽管我很确定一定有一个。)

>dat拆分(dat$col3,dat$col1)
$`500x`
[1] 9.07 8.24
$`50x`
[1] 11.64 12.82
$`5x`
[1] 23.60 35.17

基本上是对评论的认可。(我尝试通过两次不同的搜索找到了一个副本,但都失败了,尽管我很确定一定有一个。)

>dat拆分(dat$col3,dat$col1)
$`500x`
[1] 9.07 8.24
$`50x`
[1] 11.64 12.82
$`5x`
[1] 23.60 35.17

您是否正在尝试制作自己版本的
拆分
?也就是说,
split(数据集$col1,数据集$col3)
是这样的,但我想基于索引将这些值存储在列表中,以备将来使用analysis@Paul85-
split
将根据拆分变量的唯一值命名每个列表组件-在本例中为
col3
-我认为这正是您想要的。@Gregor我认为是另一种方式。在col1上拆分col3您是否正在尝试制作自己版本的
split
?也就是说,
split(数据集$col1,数据集$col3)
是这样的,但我想基于索引将这些值存储在列表中,以备将来使用analysis@Paul85-
split
将根据拆分变量的唯一值命名每个列表组件-在本例中为
col3
-我认为这正是您想要的。@Gregor我认为是另一种方式。在col1上拆分col3
somelist
$500x
[1] 9.07 8.24
$50x
[1] 11.64 12.82
$5x
[1] 23.6 35.17
> 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