我试图理解如何在向量上使用优秀的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需要一个数组,并且在向量上失败。
谢谢!
答案 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是等价的