2つのベクトルの値に依存する名前で、データフレームに一連の列を作成しようとしています。サンプルデータの説明と提供に最善を尽くしますが、不明な点がある場合は事前にお詫び申し上げます。
# 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'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加