&引用;as.Date.numeric(e)中的错误:';原产地';“必须提供”;添加行时
我有一个数据帧,&引用;as.Date.numeric(e)中的错误:';原产地';“必须提供”;添加行时,r,date,R,Date,我有一个数据帧,df,如下所示: df date periodNumber value 1 2020-02-02 0 814 2 2020-02-09 0 1592 3 2020-02-09 1 1808 4 2020-02-16 0 2746 5 2020-02-16 1 2646 6 2020-02-16 2 2993 str(
df
,如下所示:
df
date periodNumber value
1 2020-02-02 0 814
2 2020-02-09 0 1592
3 2020-02-09 1 1808
4 2020-02-16 0 2746
5 2020-02-16 1 2646
6 2020-02-16 2 2993
str(df)
'data.frame': 6 obs. of 3 variables:
$ date : Date, format: "2020-02-02" "2020-02-09" "2020-02-09" "2020-02-16" ...
$ periodNumber: int 0 0 1 0 1 2
$ value : num 814 1592 1808 2746 2646 2993
for(i in 1:nrow(df)){
df[nrow(df)+1,] <- c(df$date[i]+1, df$periodNumber[i], df$periodNumber[i])
}
可以看出,df$date
是date
格式。我有一个for循环将行添加到此数据帧,如下所示:
df
date periodNumber value
1 2020-02-02 0 814
2 2020-02-09 0 1592
3 2020-02-09 1 1808
4 2020-02-16 0 2746
5 2020-02-16 1 2646
6 2020-02-16 2 2993
str(df)
'data.frame': 6 obs. of 3 variables:
$ date : Date, format: "2020-02-02" "2020-02-09" "2020-02-09" "2020-02-16" ...
$ periodNumber: int 0 0 1 0 1 2
$ value : num 814 1592 1808 2746 2646 2993
for(i in 1:nrow(df)){
df[nrow(df)+1,] <- c(df$date[i]+1, df$periodNumber[i], df$periodNumber[i])
}
for
循环中的c
想要将这三个值强制转换为一种格式
在?c
中,我们可以看到:
输出类型由层次结构NULLorigin=
(应该在哪里定义它呢??),所以它会抛出一个错误
这其实很有趣,因为
c(1, as.Date("2020-01-01"))
# [1] 1 18262
但是
这至少是不一致的,可能是一个bug,我找不到任何文档
无论如何,使用data.frame
允许多个类
for(i in 1:nrow(df)){
df[nrow(df)+1,] <- data.frame(df$date[i]+1, df$periodNumber[i], df$periodNumber[i])
}
# date periodNumber value
# 1 2020-02-02 0 814
# 2 2020-02-09 0 1592
# 3 2020-02-09 1 1808
# 4 2020-02-16 0 2746
# 5 2020-02-16 1 2646
# 6 2020-02-16 2 2993
# 7 2020-02-03 0 0
# 8 2020-02-10 0 0
# 9 2020-02-10 1 1
# 10 2020-02-17 0 0
# 11 2020-02-17 1 1
# 12 2020-02-17 2 2
for(1中的i:nrow(df)){
df[nrow(df)+1,]您能否提供dput(head(df,3))
以便其他人可以进行测试?
df <- structure(list(date = structure(c(18294, 18301, 18301, 18308,
18308, 18308), class = "Date"), periodNumber = c(0L, 0L, 1L,
0L, 1L, 2L), value = c(814L, 1592L, 1808L, 2746L, 2646L, 2993L
)), row.names = c("1", "2", "3", "4", "5", "6"), class = "data.frame")