R 当赋予函数时,数据帧折叠为向量
我试图在函数中使用数据帧的内容,这里是我问题的一个简化示例R 当赋予函数时,数据帧折叠为向量,r,dataframe,mapply,custom-function,R,Dataframe,Mapply,Custom Function,我试图在函数中使用数据帧的内容,这里是我问题的一个简化示例 df <- data.frame(v1=1:10,v2=23:32) df2 <- data.frame(v1=1:3,v2=3:5) fxm <- function(x,y,q) { return(cbind(q[q[,2]==x,],y)) } mapply(fxm,df[,1],df[,2],q=df2) df如果我理解正确,您希望将整个q=df2传递给您定义的fxm函数,对吗 问题在于,在您的代码
df <- data.frame(v1=1:10,v2=23:32)
df2 <- data.frame(v1=1:3,v2=3:5)
fxm <- function(x,y,q)
{
return(cbind(q[q[,2]==x,],y))
}
mapply(fxm,df[,1],df[,2],q=df2)
df如果我理解正确,您希望将整个q=df2
传递给您定义的fxm
函数,对吗
问题在于,在您的代码中,mapply
将从q=df2
提取元素作为一些附加参数,这与从df[,1]
和df[,2]
提取元素相同。您需要为mapply
设置MoreArgs
参数,以便将整个过程传递给函数,如下所示:
df <- data.frame(v1=1:10,v2=23:32)
df2 <- data.frame(v1=1:3,v2=3:5)
fxm <- function(x,y,q)
{
print(q)
return(cbind(q[q[,2]==x,],y))
}
mapply(fxm,df[,1],df[,2], MoreArgs = list(q=df2))
df您希望得到的结果是什么?-作为第一次尝试,尝试从函数中的q
索引中删除逗号(即return(x+y+q[2])
),我认为我的问题过于简单了,我对它进行了编辑,希望它能稍微澄清一点。从q索引中删除逗号只会从向量中选择第二个元素,该向量来自我的数据帧的第一列,这是我不理解的一些默认行为的结果,这对我没有帮助,因为我需要访问数据帧的第n列以进行比较操作,然后返回数据帧的其余部分。此函数的预期输出是什么?data[,sing_column]
将返回一个向量。您可以使用data[single\u column]
或data[,single\u column,drop=FALSE]
返回数据帧。也就是说,看起来你没有做任何事情来确保你绑定在一起的向量具有相同的长度,所以这也可能导致问题。
df <- data.frame(v1=1:10,v2=23:32)
df2 <- data.frame(v1=1:3,v2=3:5)
fxm <- function(x,y,q)
{
print(q)
return(cbind(q[q[,2]==x,],y))
}
mapply(fxm,df[,1],df[,2], MoreArgs = list(q=df2))