У меня есть df
с фиксированными столбцами и нефиксированным номером строки. Я создал пустые векторы и заполнил команды R, чтобы создавать векторы самостоятельно, когда я использую eval(parse(text = someVector))
. То, что я сделал с for-loop
, работает, но я хотел бы превратить его в функцию и / или использовать *apply()
, и я не знаю, как это сделать. Я бы очень хотел улучшить свои навыки программирования. Я хотел бы иметь возможность выбирать переменные по имени или положению и всегда go в каждой строке.
при работе с представлением, я ожидаю 30 векторов, созданных в рабочей среде - для каждой модели автомобиля для заданный столбец отдельный вектор для хранения значения этого столбца для этой строки / модели и еще 6 векторов, в которых хранятся команды R.
например, один из векторов должен выглядеть следующим образом: cyl_MazdaRX4Wag <- 6
# df
df <- mtcars[1:5,]
df$carmodel <- gsub("[[:space:]]", "", rownames(df))
# create empty vectors to store R command
carmodel <- c()
mpg <- c()
cyl <- c()
hp <- c()
gear <- c()
carb <- c()
# loop through every row to create an R command
for(i in 1:nrow(df)){
carmodel[i] <- paste0("carmodel_", df$carmodel[i] , " <- ", "'", df$carmodel[i], "'",";")
mpg[i] <- paste0("mpg_", df$carmodel[i], " <- ", df$mpg[i], ";")
cyl[i] <- paste0("cyl_", df$carmodel[i], " <- ", df$cyl[i], ";")
hp[i] <- paste0("hp_", df$carmodel[i], " <- ", df$hp[i], ";")
gear[i] <- paste0("gear_", df$carmodel[i], " <- ", df$gear[i], ";")
carb[i] <- paste0("carb_", df$carmodel[i], " <- ", df$carb[i], ";")
}
# collapse the vectors in one string
carmodel <- paste(carmodel, collapse = " ")
mpg <- paste(mpg, collapse = " ")
cyl <- paste(cyl, collapse = " ")
hp <- paste(hp, collapse = " ")
gear <- paste(gear, collapse = " ")
carb <- paste(carb, collapse = " ")
# execute R command
eval(parse(text = carmodel))
eval(parse(text = mpg))
eval(parse(text = cyl))
eval(parse(text = hp))
# delete vectors that store the R commands
rm(list = c("carmodel","mpg","cyl", "hp","gear","carb"))
eval(parse(text = gear))
eval(parse(text = carb))