繁体   English   中英

如何在R中的Vector中附加函数的输出

[英]how to append output of a function in a Vector in 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

现在,我想创建一个函数,针对education_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个“私有”。 证明工作场所列的education_num列模式的每个值都是“私有”。 请帮忙。

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

尝试使用data.table:

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

这实际上对education_num上的每个组调用了getmode。

希望这对您有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM