向量化循环

时间:2018-12-16 17:12:28

标签: r for-loop vectorization

我有以下数据:

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 alredy的以下用法是否已向量化?

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

1 个答案:

答案 0 :(得分:1)

您可以使用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
相关问题