【问题标题】:function syntax // Generalizing the functionfunction syntax // 泛化函数
【发布时间】:2017-06-06 18:34:52
【问题描述】:

我正在尝试对单个列中存在差异的重复观察进行子集化。在此示例中,我尝试使用相同的 id 编号但不同的标签编号对观察进行子集化。我打算制作自己的函数,然后使用 lapply 函数来检查我的数据集。

到目前为止,我的代码如下所示:

test.function <- (i) {
  if(test.data[i, "id"] == test.data[i-1, "id"] &
     test.data[i, "tag.num"] != test.data[i-1, "tag.num"]){
   id.tag <- subset(i)
   }
}

lapply (test.data, test.function)

我对上述声明有几个问题。最重要的是,我不断收到:

Error: unexpected '{' in "test.data <- (i) {"

我真的不确定为什么会一直发生这种情况,如果有任何指导,我将不胜感激。

当前数据集的样子(999只是一个缺失值指标):

id     tag.num
1000   999
1000   A49038483
1100   999
1100   A49294883
1200   999
1200   999

再一次,我只是想用不同的标签号对同一个 id 进行子集化。在此示例中,我尝试对 id 1000 和 1100 的 4 个观察值进行子集化。

另外,我想知道 if 语句中的语法以及是否有必要指定我的数据集名称。我希望在我的原始数据集中的几个不同的列上应用这个函数。如果有一种更通用的方法可以设置它,然后能够为所有适用的列运行 lapply 函数,那将是很棒的知识。感谢您提供任何和所有帮助。

【问题讨论】:

  • 您错过了)。在第三行末尾,{ 之前。

标签: r function syntax-error


【解决方案1】:

就错误而言,您缺少function)

test.function <- function(i) {
  if(test.data[i, "id"] == test.data[i-1, "id"] &
     test.data[i, "tag.num"] != test.data[i-1, "tag.num"]){
       id.tag <- subset(i)
     }
}

运行没有任何错误。

【讨论】:

  • 您好,抱歉,这实际上是我输入的错误。原始代码确实有一个右括号
  • @Dpek 我也许可以帮助你让函数按照你想要的方式工作,但就目前而言,我不知道你期望函数做什么,或者预期什么输出应该是。
【解决方案2】:

要在R中定义一个函数,语法是

fun.name <- function(args) {...}

所以你需要function(i),而上面只有(i)

我还建议,如果您尝试 lapply 跨越数据集的行,您可能不需要这样做。

我并不完全清楚你想要做什么。您能否发布一个数据样本以及您希望得到什么?

【讨论】:

  • 嗨,Alex 抱歉,缺少括号是错字,在我的原始代码中。我上传了一个示例数据集。但是,我正在尝试对原始数据集进行子集化,而不是对其进行修改。
猜你喜欢
  • 1970-01-01
  • 2017-07-27
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-27
  • 2021-10-03
  • 2021-04-01
相关资源
最近更新 更多