访问 R Dataframe 值而不是 Tibble
Access R Dataframe Values Rather than Tibble
我是一位经验丰富的 Pandas 用户,我无法将我的 R 框架中的值插入到函数中。
以下函数适用于硬编码值
>seq.Date(as.Date('2018-01-01'), as.Date('2018-01-31'), 'days')
[1] "2018-01-01" "2018-01-02" "2018-01-03" "2018-01-04" "2018-01-05" "2018-01-06" "2018-01-07"
[8] "2018-01-08" "2018-01-09" "2018-01-10" "2018-01-11" "2018-01-12" "2018-01-13" "2018-01-14"
[15] "2018-01-15" "2018-01-16" "2018-01-17" "2018-01-18" "2018-01-19" "2018-01-20" "2018-01-21"
[22] "2018-01-22" "2018-01-23" "2018-01-24" "2018-01-25" "2018-01-26" "2018-01-27" "2018-01-28"
[29] "2018-01-29" "2018-01-30" "2018-01-31"
这是我正在使用的数据框的摘录
>df[1,1:2]
# A tibble: 1 x 2
start_time end_time
<date> <date>
1 2017-04-27 2017-05-11
将这些值插入 'seq.Date' 函数时出现错误
> seq.Date(from=df[1,1], to=df[1,2], 'days')
Error in seq.Date(from = df[1, 1], to = df[1, 2], "days") :
'from' must be a "Date" object
我怀疑这是因为使用 df[x,y] returns 进行子集化而不是特定值
data.class(df[1,1])
[1] "tbl_df"
我希望得到的是一系列日期。我需要能够将其指向数据框周围的各个位置。
非常感谢您的帮助!
tibble 的提取函数可能不是 return 向量而是一列 tibble,使用 dplyr::pull
将列提取为向量,就像这个答案:Extract a dplyr tbl column as a vector
另一种选择是将 `[`
函数中的 drop
参数设置为 TRUE
。
If TRUE the result is coerced to the lowest possible dimension
seq.Date(from = df[1, 1, drop = TRUE], to = df[1, 2, drop = TRUE], 'days')
# [1] "2017-04-27" "2017-04-28" "2017-04-29" "2017-04-30" "2017-05-01" "2017-05-02" "2017-05-03" "2017-05-04" "2017-05-05" "2017-05-06"
#[11] "2017-05-07" "2017-05-08" "2017-05-09" "2017-05-10" "2017-05-11"
数据
df <- tibble(start_time = as.Date('2017-04-27'),
end_time = as.Date('2017-05-11'))
只需使用双括号:
seq.Date(from=df[[1,1]], to=df[[1,2]], 'days')
我是一位经验丰富的 Pandas 用户,我无法将我的 R 框架中的值插入到函数中。
以下函数适用于硬编码值
>seq.Date(as.Date('2018-01-01'), as.Date('2018-01-31'), 'days')
[1] "2018-01-01" "2018-01-02" "2018-01-03" "2018-01-04" "2018-01-05" "2018-01-06" "2018-01-07"
[8] "2018-01-08" "2018-01-09" "2018-01-10" "2018-01-11" "2018-01-12" "2018-01-13" "2018-01-14"
[15] "2018-01-15" "2018-01-16" "2018-01-17" "2018-01-18" "2018-01-19" "2018-01-20" "2018-01-21"
[22] "2018-01-22" "2018-01-23" "2018-01-24" "2018-01-25" "2018-01-26" "2018-01-27" "2018-01-28"
[29] "2018-01-29" "2018-01-30" "2018-01-31"
这是我正在使用的数据框的摘录
>df[1,1:2]
# A tibble: 1 x 2
start_time end_time
<date> <date>
1 2017-04-27 2017-05-11
将这些值插入 'seq.Date' 函数时出现错误
> seq.Date(from=df[1,1], to=df[1,2], 'days')
Error in seq.Date(from = df[1, 1], to = df[1, 2], "days") :
'from' must be a "Date" object
我怀疑这是因为使用 df[x,y] returns 进行子集化而不是特定值
data.class(df[1,1])
[1] "tbl_df"
我希望得到的是一系列日期。我需要能够将其指向数据框周围的各个位置。
非常感谢您的帮助!
tibble 的提取函数可能不是 return 向量而是一列 tibble,使用 dplyr::pull
将列提取为向量,就像这个答案:Extract a dplyr tbl column as a vector
另一种选择是将 `[`
函数中的 drop
参数设置为 TRUE
。
If TRUE the result is coerced to the lowest possible dimension
seq.Date(from = df[1, 1, drop = TRUE], to = df[1, 2, drop = TRUE], 'days')
# [1] "2017-04-27" "2017-04-28" "2017-04-29" "2017-04-30" "2017-05-01" "2017-05-02" "2017-05-03" "2017-05-04" "2017-05-05" "2017-05-06"
#[11] "2017-05-07" "2017-05-08" "2017-05-09" "2017-05-10" "2017-05-11"
数据
df <- tibble(start_time = as.Date('2017-04-27'),
end_time = as.Date('2017-05-11'))
只需使用双括号:
seq.Date(from=df[[1,1]], to=df[[1,2]], 'days')