r-难以理解填充日期的空列的结构

r-难以理解填充日期的空列的结构,r,as.date,R,As.date,我有一个空列的数据框。我想用日期填充数据框的一行 x <- data.frame(a = 1:2, b = rep(NA, 2), c = rep(NA, 2)) mydates <- as.Date(c("2016-01-31", "2016-02-29")) x[1, c("b", "c")] <- mydates x str(x) x如注释中所述,需要将列的类别设置为最新。但将这些值作为命名列表传递也很有帮助 > x <- data.frame(a = 1:

我有一个空列的数据框。我想用日期填充数据框的一行

x <- data.frame(a = 1:2, b = rep(NA, 2), c = rep(NA, 2))
mydates <- as.Date(c("2016-01-31", "2016-02-29"))
x[1, c("b", "c")] <- mydates
x
str(x)

x如注释中所述,需要将列的类别设置为最新。但将这些值作为命名列表传递也很有帮助

> x <- data.frame(a = 1:2, b = as.Date(rep(NA, 2)), c = as.Date(rep(NA, 2)))
> x
  a    b    c
1 1 <NA> <NA>
2 2 <NA> <NA>
> x[1, c("b", "c")] <- list( b= as.Date(c("2016-01-31"), c=as.Date("2016-02-29")) )
> x
  a          b          c
1 1 2016-01-31 2016-01-31
2 2       <NA>       <NA>
> str(x)
'data.frame':   2 obs. of  3 variables:
 $ a: int  1 2
 $ b: Date, format: "2016-01-31" NA
 $ c: Date, format: "2016-01-31" NA
>x
a、b、c
1 1  
2 2  
>x[1,c(“b”,“c”)]x
a、b、c
1 1 2016-01-31 2016-01-31
2 2              
>str(x)
“data.frame”:2个obs。共有3个变量:
$a:int 12
$b:日期、格式:“2016-01-31”不适用
$c:日期、格式:“2016-01-31”不适用
下面是我建议的方法的一个更复杂的测试(因为我已经厌倦了等待您发布更复杂的代码示例):


x我可能会将b&c列初始化为NA日期,然后尝试插入日期的数据帧,而不是向量。您所需要做的就是将
rep
调用包装到
as.Date()
@richscrivenno中,如果我将我的rep调用包装到as.Date()中,我会遇到与块2中相同的问题:as.Date.numeric(value)中的错误:“来源”必须为supplied@joran这就是我的代码块2中发生的情况-它不起作用。您的代码块没有一个符合我的建议。谢谢您,我很抱歉-我稍微更新了我的问题。在现实生活中,我的日期保存在向量mydates中。当我有一个向量mydates时,你的列表解决方案——虽然很好——不起作用。列表(mydates)不起作用。您需要用代码显示“不起作用”的内容。您的更新似乎不起作用。我的第三段代码正在起作用。我的问题是——为什么第二个不起作用?@user3245256除了“插入一个列表而不是一个向量可以避免在
[@joran好的,我理解,但是,我仍然没有一个使用mydates的列表解决方案的示例。
x <- data.frame(a = 1:2, b = rep(NA, 2), c = rep(NA, 2))
x
x[1, c("b", "c")] <- mydates
x
for (v in c("b", "c")) x[[v]] <- as.Date(x[[v]])
x
str(x)
> x <- data.frame(a = 1:2, b = as.Date(rep(NA, 2)), c = as.Date(rep(NA, 2)))
> x
  a    b    c
1 1 <NA> <NA>
2 2 <NA> <NA>
> x[1, c("b", "c")] <- list( b= as.Date(c("2016-01-31"), c=as.Date("2016-02-29")) )
> x
  a          b          c
1 1 2016-01-31 2016-01-31
2 2       <NA>       <NA>
> str(x)
'data.frame':   2 obs. of  3 variables:
 $ a: int  1 2
 $ b: Date, format: "2016-01-31" NA
 $ c: Date, format: "2016-01-31" NA
x <- data.frame(a = 1:3, b = as.Date(rep(NA, 3)), c = as.Date(rep(NA, 3)))
x
#----------
  a    b    c
1 1 <NA> <NA>
2 2 <NA> <NA>
3 3 <NA> <NA>
#---
x[1:2, c("b", "c")] <- list( b= as.Date(c("2016-01-31", "2020-02-09"), c=as.Date("2016-02-29", "2027-08-22")) )
x
#####
  a          b          c
1 1 2016-01-31 2016-01-31
2 2 2020-02-09 2020-02-09
3 3       <NA>       <NA>