目前尚不清楚您想要什么,但这里有一些代码aggregate
可以帮助您入门:
> df$values <- as.character(df$values)
> # A `list` of the values
> (da1 <- aggregate(values ~ date, df, I, simplify=FALSE))
date values
1 2000 a, b, d
> str(da1)
'data.frame': 1 obs. of 2 variables:
$ date : Factor w/ 1 level "2000": 1
$ values:List of 1
..$ 0:Class 'AsIs' chr [1:3] "a" "b" "d"
> # All the values collapsed into one string
> (da2 <- aggregate(values ~ date, df, paste, collapse = ", ", simplify=FALSE))
date values
1 2000 a, b, d
> str(da2)
'data.frame': 1 obs. of 2 variables:
$ date : Factor w/ 1 level "2000": 1
$ values:List of 1
..$ 0: chr "a, b, d"
我已经展示了str
结构,因此您可以在这里看到两个示例之间的区别。
如果我正确理解您在下面的评论,您可能也对此感兴趣:
> date = "2000"
> values = c("a", "b", "d")
> (temp <- data.frame(date, values = I(list(values))))
date values
1 2000 a, b, d
> str(temp)
'data.frame': 1 obs. of 2 variables:
$ date : Factor w/ 1 level "2000": 1
$ values:List of 1
..$ : chr "a" "b" "d"
..- attr(*, "class")= chr "AsIs"
换句话说,如果您想list
在创建 a 时将 a 作为列项,则data.frame
必须使用该I
函数。