我有posixct个元素的集合(我知道我无法将POSIXct
个对象的集合作为向量,这就是为什么在此示例中使用list
的原因):< / p>
input_timestamps <- list(
as.POSIXct("02.08.2018", format = "%d.%m.%Y", origin = "01.01.1970", tz = "UTC"),
as.POSIXct("04.08.2018", format = "%d.%m.%Y", origin = "01.01.1970", tz = "UTC"),
as.POSIXct("14.08.2018", format = "%d.%m.%Y", origin = "01.01.1970", tz = "UTC")
)
现在,我需要将此列表作为列添加到data.frame
中。
当前的解决方案如下:
1。将POSIXct
对象转换为数字,并将列表转换为向量
inputs_timestamps <- unlist(lapply(input_timestamps, as.numeric))
2-将此向量作为data.frame
对象添加到POSIXct
inputs_df <- data.frame(timestamp = as.POSIXct(input_timestamps, format = "%d.%m.%Y", origin = "01.01.1970", tz = "UTC"), input = 1:3)
我相信可能会有更好的方法。请分享您的经验!
答案 0 :(得分:1)
可以用renderComponent() {
switch (this.state.renderView) {
case 1:
return <Main />;
case 2:
return <Main2 />;
default:
return <SelectionPage clickBtn={this.clickBtn} />;
}
}
render() {
return this.renderComponent();
}
c''代替两步过程将其转换为向量
do.call(
或者另一个选择是将inputs_df <- data.frame(timestamp = do.call(c, input_timestamps),
input = seq_along(input_timestamps))
更改为命名的list
和list
melt
答案 1 :(得分:1)
我知道我无法将POSIXct对象的集合保留为 向量,这就是我在此示例中使用列表的原因
我不相信这是真的,请采取以下措施:
> input_timestamps <- c('02.08.2018', '04.08.2018', '14.08.2018')
> inputs_df <- data.frame(timestamp = as.POSIXct(input_timestamps, format = "%d.%m.%Y", tz = "UTC"), input = 1:3)
> class(inputs_df$timestamp)
[1] "POSIXct" "POSIXt"
> inputs_df
timestamp input
1 2018-08-02 1
2 2018-08-04 2
3 2018-08-14 3
> input_timestamps <- as.POSIXct(c('02.08.2018', '04.08.2018', '14.08.2018'), format = "%d.%m.%Y", origin = "01.01.1970", tz = "UTC")
> inputs_df <- data.frame(timestamp = input_timestamps, input = 1:3)
> class(inputs_df$timestamp)
[1] "POSIXct" "POSIXt"
> inputs_df
timestamp input
1 2018-08-02 1
2 2018-08-04 2
3 2018-08-14 3
在任何一种情况下,您都可以使用向量简单地创建data.frame,而无需在它们之间进行不必要的转换。
更新
如果您已经将它们存储为单独的对象,则可以执行以下操作。
input_timestamp1 <- as.POSIXct("02.08.2018", format = "%d.%m.%Y", origin = "01.01.1970", tz = "UTC")
input_timestamp2 <- as.POSIXct("04.08.2018", format = "%d.%m.%Y", origin = "01.01.1970", tz = "UTC")
input_timestamp3 <- as.POSIXct("14.08.2018", format = "%d.%m.%Y", origin = "01.01.1970", tz = "UTC")
input_timestamps <- c(input_timestamp1, input_timestamp2, input_timestamp3)
OR
input_timestamps <- c(
as.POSIXct("02.08.2018", format = "%d.%m.%Y", origin = "01.01.1970", tz = "UTC"),
as.POSIXct("04.08.2018", format = "%d.%m.%Y", origin = "01.01.1970", tz = "UTC"),
as.POSIXct("14.08.2018", format = "%d.%m.%Y", origin = "01.01.1970", tz = "UTC")
)