0

我有如下数据框

Col1     Col2
White    Orange
White    Blue
Red      White

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

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

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

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

2 回答 2

0

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

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

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

于 2020-02-06T05:34:48.757 回答
0

该函数对列一无所知。它是通过apply具有第二个参数的函数部署的,该参数确定是在行还是列上工作。该函数以数据帧的单行作为向量,并 pastefun使用 将值放在一起collapse=" "。而[<--function 就是将粘贴调用中的值放入数据框的列中。

-paste函数通常以向量化方式运行,返回一个长度由其参数长度确定的向量。然而,该collapse参数改变了它的操作方式并“折叠”所有值,因此返回一个长度为 1 的字符向量(通过apply( ..., 1, ...}

因此,实际上是apply- 函数因在数据帧上按行执行操作而获得赞誉,而[<-函数因创建新列而获得赞誉。

于 2020-02-06T05:45:30.237 回答