使用apply(currame,margin = 1,function(current_row)),如何将正在操作的currame的当前行传递给函数?

68bkxrlz  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(72)

我有一个函数,需要的行编号的框架。

my_function <- function(row_number){
  old_dataframe[row_number,] <<- old_dataframe[row_number,]*5
}

apply(old_dataframe, margin = 1, my_function())

字符串
有没有一种方法可以将当前在apply()函数中操作的行号作为参数传递给正在应用于对象框架的函数-在本例中是我的函数()?

apply(old_dataframe, margin = 1, myfunction(current_row_number))


我还没有找到一个与我的具体情况有关的主题。我想知道我是否错过了正确表达它的词汇。
我从代码中得到的问题实际上是这样的:“Error in Ops.data.frame(fsrf[2 + band,],fos[obs_row,]):'*' is only defined for data frames of the same size.”
然而,两个嵌套框fsrf[,]和fos[,]是完全相同的维度。在这种情况下,在函数中,当操作时,它们都拥有1行和2101个变量。它们确实是相同的大小。但我怀疑错误来自apply()函数将my_function逐行应用于旧的_嵌套框的方式。

cetgtptt

cetgtptt1#

问题是,在这种情况下,apply返回的是一个向量,而不是一个 Dataframe ,因为您将它与MARGIN = 1一起使用,因此它将该函数应用于每一行,但它将行作为向量传递,而不是作为单行 Dataframe 传递。
将代码修改为:

old_dataframe <- data.frame(
  A = 1:3,
  B = 4:6,
  C = 7:9
)

my_function <- function(row) {
  return(row * 5)
}

as.data.frame(t(apply(old_dataframe, 1, my_function)))

个字符

相关问题