如何在 R 中的向量中追加函数的输出

  • 本文关键字:追加 函数 输出 向量 r
  • 更新时间 :
  • 英文 :


我正在根据另一列计算列的模式,但我无法将函数的返回附加到向量:getmode <- function(v) { uniqv <- unique(v) uniqv[which.max(tabulate(match(v, uniqv)))] }

上面的函数给了我列的模式。当我调用该函数时,我得到 按以下方式输出:

x<-income_train$workclass[income_train$educational_num == '16']
x

输出:

[1] Private
Levels: ? Federal-gov Local-gov Never-worked Private Self-emp-inc Self-emp-not-inc State-gov Without-pay

现在我想创建一个函数,对于educational_num列的每个值,即 1 到 16,我得到了工作类的模式。所以我写了代码:

`z <-c()
for (i in 1:16){
x<-NULL
x<-income_train$workclass[income_train$educational_num == i]
result <- getmode(income_train$workclass)
print(result)
z <- c(z,result)
}
print(z)`

上面的代码给了我如下输出:

[1] Private
Levels: ? Federal-gov Local-gov Never-worked Private Self-emp-inc Self-emp-  not-inc State-gov Without-pay
[1] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5

我不知道5从哪里来。我希望它的结果包含 16 个"私人"。这证明对于educational_num工作区列的每个值,列模式都是"私有"。请帮忙。

将来,请尝试提供具有dput的数据集,以便其他人可以更轻松地理解您的数据。

尝试使用 data.table:

library(data.table)
setDT(income_train)
income_train[, getmode(workclass), educational_num]

这有效地调用了educational_num上每个组的 getmode。

希望这对你有用。

最新更新