粘贴如何在函数中工作

How paste works within a function

我有如下数据框

Col1     Col2
White    Orange
White    Blue
Red      White

在执行下面的代码时,两列的项目加在一起。请解释该函数的工作原理以及该函数如何知道它应该添加行副数据而不是列。

paste_fun <- function(i){
  (paste(as.character(i),collapse=" "))
}

下面的代码向数据添加了一个新列frame.My问题在这里输入了 1,这是行它如何将其视为新列。

phone_data["new_col"] <- apply(phone_data(as.character[i]),1,paste_fun)

鉴于您的数据框中只有两列,您甚至不需要使用 apply 函数,只需 paste 即可:

phone_data$new_col <- paste(phone_data$Col1, phone_data$Col2)

关于 apply 的工作原理,您将 1 作为第二个参数传递,它告诉 R 在行模式下执行应用。因此,它针对整行运行您的粘贴函数,强制转换为字符向量,以生成串联结果。

该函数对列一无所知。它是通过 apply 函数部署的,该函数有第二个参数来确定是处理行还是列。该函数被赋予数据帧的一行作为向量,并且 pastefun 使用 collapse=" " 将这些值放在一起。 [<- 函数将粘贴调用的值放入数据框的列中。

paste-函数通常以向量化方式运行,返回一个长度由其参数长度决定的向量。然而,collapse 参数改变了它的操作方式和 "collapses" 所有值,因此 returns 一个长度为 1 的字符向量(通过 apply( ..., 1, ...} 部署时每行一个)

所以实际上是 apply 函数因在数据框上按行操作而获得荣誉,而 [<- 函数因创建新列而获得荣誉。