如何从R中的data.frame获取字典功能
R似乎没有字典结构。假设我有一个data.frame,其中有唯一的名字(键): 我想知道莎莉的姓是什么,只知道她的名 我可以编写一些难看的代码,遍历如何从R中的data.frame获取字典功能,r,dictionary,dataframe,R,Dictionary,Dataframe,R似乎没有字典结构。假设我有一个data.frame,其中有唯一的名字(键): 我想知道莎莉的姓是什么,只知道她的名 我可以编写一些难看的代码,遍历people$Firstname,跟踪索引,然后在找到匹配项后在该索引处获取people$Lastname,但这可能不是正确的方法 “R方式”是如何做到这一点的?我不认为您的数据框架是按照您认为的方式构建的。使用这个,它非常简单: people <- data.frame(Firstname=c("Bob", "Sally"),
people$Firstname
,跟踪索引,然后在找到匹配项后在该索引处获取people$Lastname
,但这可能不是正确的方法
“R方式”是如何做到这一点的?我不认为您的数据框架是按照您认为的方式构建的。使用这个,它非常简单:
people <- data.frame(Firstname=c("Bob", "Sally"),
Surname=c("Jones", "Smith"),
stringsAsFactors=FALSE)
people[people$Firstname=="Sally",]$Surname
## [1] Smith
people为了好玩,对于您提供的这个特定示例,您还可以使用base R中的person
函数。在这里,我使用了as.person
:
people <- c(as.person("Bob Jones"), as.person("Sally Smith"))
str(people)
# List of 2
# $ :Class 'person' hidden list of 1
# ..$ :List of 5
# .. ..$ given : chr "Bob"
# .. ..$ family : chr "Jones"
# .. ..$ role : NULL
# .. ..$ email : NULL
# .. ..$ comment: NULL
# $ :Class 'person' hidden list of 1
# ..$ :List of 5
# .. ..$ given : chr "Sally"
# .. ..$ family : chr "Smith"
# .. ..$ role : NULL
# .. ..$ email : NULL
# .. ..$ comment: NULL
# - attr(*, "class")= chr "person"
people$given
# [[1]]
# [1] "Bob"
#
# [[2]]
# [1] "Sally"
people[people$given == "Bob"]
# [1] "Bob Jones"
people[people$given == "Bob"]$family
# [1] "Jones"
people R确实有类似字典的结构:列表和环境。你需要什么样的搜索结果不能解释?
ppl <- list("Bob"=list(Surname="Jones"),
"Sally"=list(Surname="Smith"))
ppl[["Bob"]]
## $Surname
## [1] "Jones"
people <- c(as.person("Bob Jones"), as.person("Sally Smith"))
str(people)
# List of 2
# $ :Class 'person' hidden list of 1
# ..$ :List of 5
# .. ..$ given : chr "Bob"
# .. ..$ family : chr "Jones"
# .. ..$ role : NULL
# .. ..$ email : NULL
# .. ..$ comment: NULL
# $ :Class 'person' hidden list of 1
# ..$ :List of 5
# .. ..$ given : chr "Sally"
# .. ..$ family : chr "Smith"
# .. ..$ role : NULL
# .. ..$ email : NULL
# .. ..$ comment: NULL
# - attr(*, "class")= chr "person"
people$given
# [[1]]
# [1] "Bob"
#
# [[2]]
# [1] "Sally"
people[people$given == "Bob"]
# [1] "Bob Jones"
people[people$given == "Bob"]$family
# [1] "Jones"