适用于矢量失败

时间:2011-03-16 20:33:13

标签: r plyr

我试图理解如何在向量上使用优秀的plyr包的命令(在我的例子中,是字符串)。我想我想要使用aaply,但它失败了,要求保证金。但是我的矢量中没有列或行!

更具体一点,以下命令有效,但会将结果返回到一个奇怪的列表中。 states.df是一个数据框,region是状态的名称(使用Hadley的map_data(“state”)命令返回)。因此,states.df $ region是字符串的向量(特别是州名)。 opinion.new是一个数字向量,使用州名命名。

states.df <- map_data("state")
ch = sapply(states.df$region, function (x) { opinion.new[names(opinion.new)==x] } )

我想做的是:

ch = aaply(states.df$region, function (x) { opinion.new[names(opinion.new)==x] } )

其中ch是从opinion.new查找或拉出的数字向量。但aaply需要一个数组,并且在向量上失败。

谢谢!

1 个答案:

答案 0 :(得分:5)

如果要在向量上使用plyr,则必须使用l * ply,如下所示:

v <- 1:10
sapply(v, function(x)x^2)
 [1]   1   4   9  16  25  36  49  64  81 100

laply(v, function(x)x^2)
 [1]   1   4   9  16  25  36  49  64  81 100

换句话说,sapply和laply是等价的