gpt4 book ai didi

r - 将 1x1 数据帧转换为值

转载 作者:行者123 更新时间:2023-12-04 17:45:36 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Extract a dplyr tbl column as a vector

(7 个回答)



dplyr::select one column and output as vector [duplicate]

(3 个回答)


3年前关闭。




我正在使用 dplyr转换大型数据框,我想将 DF 的最新日期 + 1 存储为一个值。我知道通过分解语句有更简单的方法来做到这一点,但我试图用一个管道语句来完成这一切。我遇到了一些事情,我不确定为什么 R 会这样默认。例子:

Day <- seq.Date(as.Date('2017-12-01'), as.Date('2018-02-03'), 'day')
Day <- sample(Day, length(Day))
ID <- sample(c(1:5), length(Day), replace = T)

df <- data.frame(ID, Day)

foo <- df %>%
arrange(desc(Day)) %>%
mutate(DayPlus = as.Date(Day) + 1) %>%
select(DayPlus) #%>%
#slice(1)

foo <- foo[1,1]

当我运行此代码时, foo变成等于 2018-02-04 的值如预期的。但是,当我使用 slice 运行代码时未注释:
foo <- df %>% 
arrange(desc(Day)) %>%
mutate(DayPlus = as.Date(Day) + 1) %>%
select(DayPlus) %>%
slice(1)

foo <- foo[1,1]
foo保留为数据框。我的主要问题是为什么 foo在第二个示例中不会成为值,我的第二个问题是是否有一种简单的方法可以将“2018-02-04”作为存储为 foo 的值全部来自一个 dplyr管道。

谢谢

最佳答案

那是因为您的第一个代码段返回 data.frame ,第二个返回 tibble . tibble s 类似于 data.frame s,但一个主要区别是子集。如果您有 data.frame , foo[1, 1]将第一列的第一行作为向量返回,而如果您有 tibble它返回第一列的第一行作为 tibble .

df %>% 
arrange(desc(Day)) %>%
mutate(DayPlus = as.Date(Day) + 1) %>%
select(DayPlus) %>%
class()

返回
[1] "data.frame"

而第二个
df %>% 
arrange(desc(Day)) %>%
mutate(DayPlus = as.Date(Day) + 1) %>%
select(DayPlus) %>%
slice(1) %>%
class()

返回
[1] "tbl_df"     "tbl"        "data.frame"

关于r - 将 1x1 数据帧转换为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48612459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com