向量化 for 循环

粘液组

我有以下数据:

Letters <- c("A","B","C")
Numbers <- c(1,0,1)
Numbers <- as.integer(Numbers)

Data.Frame <- data.frame(Letters,Numbers)

我想为字母创建一个虚拟变量并编写以下 for 循环:

for(level in unique(Data.Frame$Letters)){Data.Frame[paste("", level, sep = "")]
<- ifelse(Data.Frame$Letters == level, 1, 0)}

有没有办法矢量化这个 for 循环?以下对 dcast 的使用是否已经矢量化了?

dt <- data.table(Letters,Numbers)
dcast.data.table(dt, Letters+Numbers~Letters,fun.aggregate=length)
富文士

你可以用 outer

cbind(Data.Frame, +outer(Letters, setNames(nm=Letters), "=="))
#   Letters Numbers A B C
# 1       A       1 1 0 0
# 2       B       0 0 1 0
# 3       C       1 0 0 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章