在数据框中,使用 R 中向量的名称创建列
In data frame, create columns with names from vector in R
我正在尝试在数据框中创建一堆列,它们的名称取决于两个向量中的值。我会尽力解释并提供示例数据,但如有任何不明确之处,请提前致歉。
# 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]
。但是有没有办法解决这个问题?如有任何帮助,我将不胜感激!
你可以这样做作业:
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'
我正在尝试在数据框中创建一堆列,它们的名称取决于两个向量中的值。我会尽力解释并提供示例数据,但如有任何不明确之处,请提前致歉。
# 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]
。但是有没有办法解决这个问题?如有任何帮助,我将不胜感激!
你可以这样做作业:
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'