R 简洁地同时指定名称和值
我发现自己经常写下面两行。有没有简洁的替代方案R 简洁地同时指定名称和值,r,assign,R,Assign,我发现自己经常写下面两行。有没有简洁的替代方案 newObj <- vals names(newObj) <- nams # This works, but is ugly and not necessarily preferred 'names<-'(newObj <- vals, nams) newObj您想要setNames功能 # Your example data vals <- 1:3 names <- LETTERS[1:3]
newObj <- vals
names(newObj) <- nams
# This works, but is ugly and not necessarily preferred
'names<-'(newObj <- vals, nams)
newObj您想要setNames
功能
# Your example data
vals <- 1:3
names <- LETTERS[1:3]
# Using setNames
newObj <- setNames(vals, names)
newObj
#A B C
#1 2 3
#您的示例数据
VAL名称这正是我要找的。谢谢非常有趣。所以你是说,如果我有一个1GB内存的对象,并且我很可能使用名称,我不会说总是或所有对象类型,尤其是data.frame
(在你发布的示例中)它确实如此。请参阅(由R core的一名成员)其中没有。data.table
包试图避免与data.frame.+1相关的大量内部复制,data.table
中也有setnames
(小写n)。这使您可以通过名称轻松地更改特定名称;e、 g.setnames(DT,“旧名字”、“新名字”)
。
vals <- c(1, 2, 3)
nams <- c("A", "B", "C")
# Your example data
vals <- 1:3
names <- LETTERS[1:3]
# Using setNames
newObj <- setNames(vals, names)
newObj
#A B C
#1 2 3
library(data.table) # or library(bit)
setattr(vals, 'names', names)
name <- function(x, names){ setattr(x,'names', names)}
val <- 1:3
names <- LETTERS[1:3]
name(val, names)
# and it has worked!
val
## A B C
## 1 2 3