Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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 使用带有附加参数的函数将结果存储在df中_R - Fatal编程技术网

R 使用带有附加参数的函数将结果存储在df中

R 使用带有附加参数的函数将结果存储在df中,r,R,我试图编写一个函数,返回一个数据帧,该数据帧由用户作为参数提供的列组成(确切地说,用户提供他想要返回的列索引)。当我传递一个附加参数(因此是一列)时,我的函数工作正常,但当我添加另一个参数(例如,额外的3列索引)时,它会抛出一个错误。问题在哪里 我的示例基于R中可用的地震数据集: myFunc <- function(data, ...){ df <- data.frame() for (i in list(...)) { col <- data[i]

我试图编写一个函数,返回一个数据帧,该数据帧由用户作为参数提供的列组成(确切地说,用户提供他想要返回的列索引)。当我传递一个附加参数(因此是一列)时,我的函数工作正常,但当我添加另一个参数(例如,额外的3列索引)时,它会抛出一个错误。问题在哪里

我的示例基于R中可用的
地震
数据集:

myFunc <- function(data, ...){
  df <- data.frame()

  for (i in list(...)) {
      col <- data[i]      
      df <- rbind(df,col)
  }
  return(df)
}
但在这里它抛出了一个错误:

myFunc(quakes, 1,2,3)

错误是:“match.names(clab,names(xi))”: 名称与以前的名称不匹配 调用自:match.names(clab,names(xi))


我也尝试过使用
cbind
,但它也不起作用。

cbind
仅在数据帧的行数相同时才起作用。
您使用的初始数据帧有零行,无法将其绑定到非零行列。
尝试:


myFunc错误消息是什么?您的输入数据集是什么?如果你提供了一个最小的可重复的例子,你就有最大的机会得到一个有用的答案。可能会有帮助。我的示例是可复制的,我使用的是R环境中可用的
地震
数据集。我在我的帖子中添加了错误谢谢!就在您发布答案之前,我也得出了结论,我必须使用一些数据初始化df,然后使用
cbind
,谢谢您的帮助!
myFunc(quakes, 1,2,3)

myFunc <- function(data, ...){
  initdone <- F
  for (i in list(...)) {
    col <- data[i]
    if (!initdone) {
      df <- col
      initdone <- T
    } else {
      df <- cbind(df,col)
    }
  }
  return(df)
}


 myFunc(quakes, 1,2,3)
       lat   long depth
1   -20.42 181.62   562
2   -20.62 181.03   650
3   -26.00 184.10    42
4   -17.97 181.66   626
5   -20.42 181.96   649