Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.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_Dataframe_Mapply_Custom Function - Fatal编程技术网

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))