gpt4 book ai didi

r - 将数据帧中的列乘以向量

转载 作者:行者123 更新时间:2023-12-04 01:46:31 24 4
gpt4 key购买 nike

我想做的是将data.frame第1列中的所有值乘以向量中的第一个元素,然后将2列中的所有值乘以向量中的第2个元素,依此类推...

c1 <- c(1,2,3)
c2 <- c(4,5,6)
c3 <- c(7,8,9)
d1 <- data.frame(c1,c2,c3)

c1 c2 c3
1 1 4 7
2 2 5 8
3 3 6 9

v1 <- c(1,2,3)


所以结果是这样的:

  c1  c2  c3
1 1 8 21
2 2 10 24
3 3 12 27


我一次可以做一栏,但是如果我有100栏怎么办?我希望能够以编程方式执行此操作。

最佳答案

转置数据框的工作原理。

c1 <- c(1,2,3)
c2 <- c(4,5,6)
c3 <- c(7,8,9)
d1 <- data.frame(c1,c2,c3)
v1 <- c(1,2,3)
t(t(d1)*v1)
# c1 c2 c3
#[1,] 1 8 21
#[2,] 2 10 24
#[3,] 3 12 27


编辑:如果所有列都不是数字,则可以执行以下操作

c1 <- c(1,2,3)
c2 <- c(4,5,6)
c3 <- c(7,8,9)
d1 <- data.frame(c1,c2,c3)

# Adding a column of characters for demonstration
d1$c4 <- c("rr", "t", "s")

v1 <- c(1,2,3)

#Choosing only numeric columns
index <- which(sapply(d1, is.numeric) == TRUE)
d1_mat <- as.matrix(d1[,index])

d1[,index] <- t(t(d1_mat)*v1)
d1
# c1 c2 c3 c4
#1 1 8 21 rr
#2 2 10 24 t
#3 3 12 27 s

关于r - 将数据帧中的列乘以向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36111444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com