Это может быть немного более интуитивно понятно для новых пользователей R:
data <- data.frame(A = c(100, 200, 300),
B = c('A50', 'B60', 'C70'),
c = c(900, 800, 700))
select_col <- c("A", "B")
for(a in select_col) {
data[[paste0("newcol", a)]] <- substr(data[[a]], 1, 3)
}
Я предполагаю, что вы хотите поместить его в тот же фрейм данных. Если так, это должно работать. В противном случае вы можете создать новый фрейм данных с тем же количеством строк:
newdata <- data.frame(matrix(nrow = 3, ncol = 0))
, а затем изменить data
в l oop на newdata
. Если вы действительно хотите отдельный вектор для каждого (как подсказывает ваш код), вы можете использовать assign
, но я предполагаю, что вы этого не сделаете.