Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R连接后保留数据帧属性_R_Dplyr - Fatal编程技术网

R连接后保留数据帧属性

R连接后保留数据帧属性,r,dplyr,R,Dplyr,我希望在一些连接之后保留数据帧属性。似乎dplyr函数保存列的属性,但不保存数据帧本身的属性 请参见下面的示例: library("dplyr") library("lubridate") #Fake data n = 20 df <- data.frame("user_id" = 1:n, "type" = sample(c(1,2), n, replace = T), "amount" = 1000*rnorm(n

我希望在一些连接之后保留数据帧属性。似乎
dplyr
函数保存列的属性,但不保存数据帧本身的属性

请参见下面的示例:

library("dplyr")
library("lubridate")


#Fake data
n = 20
df <- data.frame("user_id" = 1:n,
                 "type" = sample(c(1,2), n, replace = T),
                 "amount" = 1000*rnorm(n))

#Suppose I want to add some metadata
attr(df, "query_timestamp") <- lubridate::now()
attr(df$amount, "currency") <- "BRL"

#encoding table for user type
encode <- data.frame("type" = c(1,2), 
                     "description" = c("vendor", "shopper"))

print(attr(df, "query_timestamp"))
[1] “BRL”

[1] “BRL”

有什么原因吗?我希望保留属性,但避免使用辅助变量来存储它们。

您可以使用
attr%来“重新附加”属性
`attr打印(attr(df,“查询时间戳”))
[1] “2018-07-18 14:41:39太平洋时报”
通常情况下,呼叫将是以下之一:

`attr(df, "query_timestamp") <-  attr(df,"query_timestamp") )
# or equivalently
`attr<-`(df, "query_timestamp", attr(df,"query_timestamp") )
`attr(df,“query\u timestamp”)您可以使用
attr%来“重新附加”属性
`attr打印(attr(df,“查询时间戳”))
[1] “2018-07-18 14:41:39太平洋时报”
通常情况下,呼叫将是以下之一:

`attr(df, "query_timestamp") <-  attr(df,"query_timestamp") )
# or equivalently
`attr<-`(df, "query_timestamp", attr(df,"query_timestamp") )

`attr(df,“query_timestamp”)
?now
返回:“在指定的包和库中没有“now”的文档:您可以尝试“now”。对不起
now()
来自
lubridate
package。修复了它,谢谢。
?now
返回:“在指定的包和库中没有关于'now'的文档:您可以尝试'?'now'”很抱歉
now()
来自
lubridate
package。修复了,谢谢。您可以使用
属性
这是矢量化染料,但它将是
属性您可以使用
属性
这是矢量化染料,但它将是
属性
print(attr(df$amount, "currency"))
df <- df %>% dplyr::left_join(encode, by = "type") %>% 
                         `attr<-`("query_timestamp", attr(df,"query_timestamp") )

> print(attr(df, "query_timestamp"))
[1] "2018-07-18 14:41:39 PDT"
`attr(df, "query_timestamp") <-  attr(df,"query_timestamp") )
# or equivalently
`attr<-`(df, "query_timestamp", attr(df,"query_timestamp") )