R - 如何使用列标题变量将列添加到数据框
R - How to add Column to dataframe with a variable for column title
我尝试在 R 中编写一个脚本,它应该通过一个数据框来查找具有 formal/nominal 个条目的列。找到这样一个列,它应该提取一个向量中的所有输入值,并为每个值添加一个具有二进制数据 (0,1) 的列。
问题:使用变量 data$lev[z] <- data[,x]==lev[z]
将名称签名到列无效。 lev[]
是一个带有名称的向量,z
是一个循环的索引。
如果有人能帮助我,那就太好了。
提前致谢。
干杯
我认为你唯一的问题是你的最后一行应该有 sample[,lev[z]]
而不是 sample$lev[z]
。正如您目前拥有的那样(即 sample$lev[z]
),您告诉 R 将向量 (TRUE, FALSE, FALSE)
分配给第 z
行中 sample
的 lev
列。在此示例中,您试图将 3 件东西放在一个地方。因此你的警告信息:number of items to replace is not a multiple of replacement length
.
工作代码为:
letter <- c("a","b","c")
id <- c(1,2,3)
sample <- data.frame(id,letter)
y <- NCOL(sample)
x <- 0
while ( x < y){
x <- x+1
test01 <- is.factor(sample[,x])
if(test01 == TRUE ){
lev <- levels(sample[,x])
q <- length(lev)
z <- 0
while (z < q){
z <- z+1
sample[,lev[z]] <- sample[,x]==lev[z]
}
}
}
我尝试在 R 中编写一个脚本,它应该通过一个数据框来查找具有 formal/nominal 个条目的列。找到这样一个列,它应该提取一个向量中的所有输入值,并为每个值添加一个具有二进制数据 (0,1) 的列。
问题:使用变量 data$lev[z] <- data[,x]==lev[z]
将名称签名到列无效。 lev[]
是一个带有名称的向量,z
是一个循环的索引。
如果有人能帮助我,那就太好了。
提前致谢。 干杯
我认为你唯一的问题是你的最后一行应该有 sample[,lev[z]]
而不是 sample$lev[z]
。正如您目前拥有的那样(即 sample$lev[z]
),您告诉 R 将向量 (TRUE, FALSE, FALSE)
分配给第 z
行中 sample
的 lev
列。在此示例中,您试图将 3 件东西放在一个地方。因此你的警告信息:number of items to replace is not a multiple of replacement length
.
工作代码为:
letter <- c("a","b","c")
id <- c(1,2,3)
sample <- data.frame(id,letter)
y <- NCOL(sample)
x <- 0
while ( x < y){
x <- x+1
test01 <- is.factor(sample[,x])
if(test01 == TRUE ){
lev <- levels(sample[,x])
q <- length(lev)
z <- 0
while (z < q){
z <- z+1
sample[,lev[z]] <- sample[,x]==lev[z]
}
}
}