Нам нужно создать столбец, прежде чем транспонировать, так как t
преобразуется в matrix
, а matrix
может содержать только один class
.Поскольку пятый столбец «радужной оболочки» не является «числовым», при выполнении транспонирования все matrix
преобразуются в character
.Таким образом, вместо того, чтобы делать вычисления впоследствии, сделайте это до транспонирования
df1 <- iris[1:5,]
df1$new <- with(df1, Sepal.Length * 0.75 + Sepal.Width *25)
t(df1)
Обновление
На основе обновленной структуры мы подставляем строку матрицы 'm1' на основе строкиимена, сделать расчет и rbind
с исходной матрицей
m1 <- as.data.frame(t(iris[1:5,1:4]))
m2 <- rbind(m1, new = m1["Sepal.Length",] * 0.75 + m1["Sepal.Width", ] * 0.25)
m2
# 1 2 3 4 5
#Sepal.Length 5.1 4.900 4.700 4.600 5.00
#Sepal.Width 3.5 3.000 3.200 3.100 3.60
#Petal.Length 1.4 1.400 1.300 1.500 1.40
#Petal.Width 0.2 0.200 0.200 0.200 0.20
#new 4.7 4.425 4.325 4.225 4.65