Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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中的data.frame获取字典功能_R_Dictionary_Dataframe - Fatal编程技术网

如何从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"),

R似乎没有字典结构。假设我有一个data.frame,其中有唯一的名字(键):

我想知道莎莉的姓是什么,只知道她的名

我可以编写一些难看的代码,遍历
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"