我想创建一个新变量,分配一个值列表,并写入一个分层数据框。我尝试过以下但是没有写入。
for(i in 1:sample){
for(j in 1:10){
x[,j]<-0
name <- paste("hierdata[[i]]$Test", j, sep = "_")
assign(name, rowSums(alpha+beta+x)))
}
}
感谢一些帮助。
要解决@Moody_Mudskipper的评论:
声明分层数据的最佳方法是使用索引列表:
hierdata <- lapply(1:sample,
function(iterator)
{
temp_list <- lapply(1:10,
function(j)
{
x[,j]<-0
value <- rowSums(alpha+beta+x)
return(value)
})
names(temp_list) <- lapply(1:10,function(j){paste0("temp_",j)})
return(temp_list)
})
不是真正的“单线”,但它包含所有好的“东西”。 Lapply默认返回列表,因此它只是嵌套每个列表中的列表。
希望你喜欢一些“好习惯”。 :)我只是想在第一次尝试时准确地解决你的问题。
尝试使用
for(i in 1:sample){
hierdata[[i]] <- list()
for(j in 1:10){
code_j_init <- paste0("hierdata[[",i,"]]$Test_",j,"<- list()")
eval(parse(text = code_j_init))
hierdata[[i]][[j]] <- list(1,2,3)
}
}
要么
for(i in 1:sample){
hierdata[[i]] <- list()
names <- c()
for(j in 1:10){
hierdata[[i]][[j]] <- list(1,2,3)
names <- c(names,paste0("Test_",j))
}
names(hierdata[[i]]) <- names
}