Векторизация для цикла - PullRequest
       16

Векторизация для цикла

0 голосов
/ 16 декабря 2018

У меня есть следующие данные:

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)}

Есть ли способвекторизовать этот цикл?Векторизовано ли следующее использование dcast alredy?

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

1 Ответ

0 голосов
/ 16 декабря 2018

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...