Следующий код делает кадр данных, полный 0 'с столбцов и строк, являющихся числами:Как сделать это без цикл
#make blank data frame, label the columns and rows
data <- data.frame(matrix(0, ncol = 4, nrow = 4))
colnames <- seq(from = 1, to = 4, by = 1)
names(data)<- sprintf("%.0f", colnames)
rownames <- seq(from=3, to=12, by=3)
rownames(data) <- sprintf("%.0f", rownames)
Мой вопрос, учитывая выше кадр данных, как я могу заполните кадр данных каждой ячейкой, принимающей значение метки строки, умноженное на метку столбца NOT, используя цикл for, как я уже указывал в следующем коде. Я хотел бы знать, как это сделать, используя векторизованный метод, и не нужно перебирать каждую отдельную ячейку.
for(i in 1:nrow(data)){
for(j in 1:ncol(data)){
data[i,j] <- as.numeric(rownames(data)[i])*as.numeric(colnames(data)[j])
}
}
Умный раствор. Что делать, если мне нужно выполнить другую функцию имен столбцов и имен строк? Например, если я определил функцию a (x, y), как я должен ввести правильное имя строки и имя столбца для этой функции? – bill999
Трудно сказать, что решение будет меняться в зависимости от того, что такое 'a (x, y)'; хотя, конечно, возможно, будет применен векторный подход. Вообще говоря, «mapply», вероятно, будет хорошей отправной точкой - независимо от того, будет ли это «лучший» подход, будет зависеть от конкретной операции. – nrussell
ОК. Думаю, я подумал об этом немного. Это всего лишь вариация вашего ответа. Благодаря! – bill999