我正在尝试这样的循环,我想动态分配矩阵列的名称:
for(i in 1:nclass){
P <- eXb / SeXb[mydata$chid]
mydata <- cbind(mydata, paste("l_", i, sep="")=P)
}
任何想法(除了事后更改colnames)?
由于
答案 0 :(得分:16)
这个怎么样?完成完整的矩阵后,您可以设置列名称。
> a <- matrix(1:9, 3)
> a
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> colnames(a) <- paste("col", 1:3, sep = "")
> a
col1 col2 col3
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
答案 1 :(得分:4)
如果您未使用cbind
,也可以执行此操作:
for(i in 1:nclass){
P <- eXb / SeXb[mydata$chid]
mydata[,paste0("l_",i)] <- P
}
Paste0
只需粘贴sep = ""
,这非常方便。幸运的是,paste
和paste0
可用于创建没有cbind的新列,如上所示。
答案 2 :(得分:3)
如果您遇到无法知道添加列数的问题,可以按以下方式添加和命名:
fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: login,
password: password,
})
})
.then(function (a) {
return a.json(); // call the json method on the response to get JSON
})
.then(function (json) {
console.log(json)
})
答案 3 :(得分:1)
如果我理解你的问题......
a <- as.data.frame(matrix(1:9, ncol=3))
n <- ncol(a)
b <- as.data.frame(matrix(10:18, ncol=3))
colnames(b) <- c("col2", "col1", "col3")
attach(b)
for (i in 1:ncol(b)) {
n <- n+1
d <- get(paste("col", i, sep=""))
a <- cbind(a, d)
colnames(a)[n] <- paste("col", i, sep="")
}
print(a)
答案 4 :(得分:1)
#here I am extracting the generes of movies and assigning to a dataframe
for(i in 1:length(imdb_generes)){ # imdb_generes c("action","friction","scifi")
genr <- imdb_generes[i]
a <- somefunction(-----,genr) # somefunction returns c(1,1,0),c(0,1,0),(1,0,0) subsequently
names(a) <- genr
my_df <- cbind(my_df,a)
}
my_df
action friction scifi
1 0 1
1 1 0
0 0 0