Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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 如何在应用中使用框架?_R - Fatal编程技术网

R 如何在应用中使用框架?

R 如何在应用中使用框架?,r,R,我真的很喜欢在R中使用框架语法。但是,如果我尝试使用apply执行此操作,它会给我一个错误,即输入是一个向量,而不是一个框架(这是正确的)。是否有一个类似于mapply的函数可以让我继续使用框架语法 df = data.frame(x = 1:5, y = 1:5) # This works, but is hard to read because you have to remember what's # in column 1 apply(df, 1, function(row) row

我真的很喜欢在R中使用框架语法。但是,如果我尝试使用apply执行此操作,它会给我一个错误,即输入是一个向量,而不是一个框架(这是正确的)。是否有一个类似于mapply的函数可以让我继续使用框架语法

df = data.frame(x = 1:5, y = 1:5)

# This works, but is hard to read because you have to remember what's
# in column 1 
apply(df, 1, function(row) row[1])

# I'd rather do this, but it gives me an error
apply(df, 1, function(row) row$x)

您不能在原子向量上使用
$
,但我想您希望将其用于可读性。但是您可以使用
[
子服务器

这里有一个例子。下次请提供一个可复制的例子。R中的问题没有数据是没有意义的

set.seed(1234)
gidd <- data.frame(region=sample(letters[1:6],100,rep=T),
                   wbregion=sample(letters[1:6],100,rep=T),
                   foodshare=rnorm(100,0,1),
                   consincPPP05 = runif(100,0,5),
                   stringsAsFactors=F)

  apply(gidd, ## I am applying it in all the grid here!
          1, 
        function(row) {
        similarRows = gidd[gidd$wbregion == row['region'] &
                         gidd$consincPPP05 > .8 * as.numeric(row['consincPPP05']),
                       ]
    return(mean(similarRows$foodshare))
  })
相当于

  ddply(df, 1, summarise, z = x*2)

你的例子对我来说没有多大意义(可能是因为它不可复制),但是你看过
ddply
了吗?这里似乎你并不真正需要
mapply
的“多重”功能。@Ari:对不起,这更普遍地适用于整个
apply
函数家族,我想简单的应用在这里效果最好。@Arun:我不确定你的意思是什么?我希望它是一个框架,而不是一个矩阵x、 @Xodarap你所说的frame是什么意思?data.frame我猜..你所说的frame语法是指$accessor?我会问这样的问题:我在data.frame中有一个数据,我需要根据一些条件对它进行子集(你解释过滤条件)为了计算foodshare的平均值。我试图使用xxapply函数来实现这一点,但没有成功。最好的方式是什么?当然,如果没有可复制的示例,所有这些都毫无意义。@agstudy:是的,我知道如何使用列号来编写函数(例如
函数(x)x[5]
),但我宁愿使用$accessor(
函数(x)x$foo
)。
  ddply(df, 1, summarise, z = x*2)