如何在R中创建索引数组,其中每一行都是一个人,每一列都是一个属性

时间:2014-08-05 18:46:11

标签: arrays r dataframe

这可能会非常简单,但我是一名初学者,并且一直在寻找文档和其他文档而没有找到答案。数组,矩阵和数据帧对我来说仍然令人困惑。

我想创建一个表或数组,其中每一行都是一个人,而evey列是一个属性(年龄,地址)。我希望能够检索与给定行对应的属性。此外,我希望能够按行输入,而不是按列输入。

我试过了:

j <- list(name="joe", age=22, address="2 Corona street")
k <- list(name="kate", age=33, address="3 Albarn road")
employees <- list(k,l)

然后希望能够检索joe的地址,其名称是变量,使用以下内容:

x <- "joe"
addressToRetrieve <- employees[name=x][address]

我意识到我的语法可能是胡言乱语,但希望足以让我知道我想要实现的目标。

2 个答案:

答案 0 :(得分:0)

您正在寻找的是一种叫做类的东西。以下是与R中的类相关的一些资源。

R:Class Definitions

PDF About Methods, Classes, And Objects

此外,您应该能够在任何编程站点上找到关于类的无数资源。

答案 1 :(得分:0)

我建议您使用data.frame(或data.table)而不是像您在示例中所做的那样处理嵌套list - 特别是如果您的数据是&#34;矩形&#34;形式。

如果是这样的话,你可以做以下事情:

employeeDF <- rbind.data.frame(j, k)
employeeDF
#    name age         address
# 2   joe  22 2 Corona street
# 21 kate  33   3 Albarn road

x <- "joe"
with(employeeDF, employeeDF[name == x, "address"])
# [1] 2 Corona street
# Levels: 2 Corona street 3 Albarn road

如果您要按行输入数据,我建议您在创建初始data.frame时,确保使用stringsAsFactors = FALSE,否则可能会遇到尝试添加新值时出现问题。