在数据框中,使用R中的vector中的名称创建列

pgky5nke  于 2023-04-03  发布在  其他
关注(0)|答案(1)|浏览(71)

我试图在一个数据框中创建一组列,它们的名称取决于两个向量中的值。我将尽我所能解释并提供示例数据,但如果不清楚,请提前道歉。

# my data frame
df <- data.frame(id = c(1, 2, 3), var1 = c("a", "c", "e"), var2 = c("b", "d", "f"))

# the two vectors
v1 <- c("x", "y", "z")
v2 <- c(10, 20, 30)

然后我想做这样的事情:

for (i in 1:length(v1)) {
  for (j in 1:length(v2)) {
    dataset$v1[i]_v2[j] <- "some value"
  }
  rm(j)
}
rm(i)

当然,这种方法不起作用的棘手部分是dataset$v1[i]_v2[j]。但是是否有一些方法可以解决这个问题?如果有任何帮助,我将不胜感激!

lp0sw83n

lp0sw83n1#

你可以像这样做作业:

for (i in 1:length(v1)) {
  for (j in 1:length(v2)) {
    # use [[]] to access the column
    df[[paste(v1[i], v2[j], sep='_')]] <- "some value"
    # this would also work:
    # df[, paste(v1[i], v2[j], sep='_')] <- "some value"
  }
  rm(j)
}
rm(i)

如果你真的想用"some_value"填充所有列,这甚至更容易:

column.names <- as.vector(sapply(v1, function(x) paste(x, v2, sep='_')))
df[,column.names] <- 'some_value'

相关问题