我有一个包含253列和100000 +行的数据框。
我想制作2列的子集,始终保留第一列,然后求和1以取右边的下一列。
第一循环:df [,c(1,2)]
第二循环:df [,c(1,3)]
....
最后一个循环:df [,c(1,253)]
我有这段代码:
for(i in 2:length(colnames(df))){
paste("a",i,sep ="") <- df[,c(1,i)]
i += 1
}
但是得到这个错误:
> for(i in 2:length(colnames(df))){
+ paste("a",i,sep ="") <- df[,c(1,i)]
+ i += 1
Error: unexpected '=' in:
" paste("a",i,sep ="") <- df[,c(1,i)]
i +="
> }
Error: unexpected '}' in "}"
注意: 我正在调用新的数据框a2,a3,......实际上,我想用相应列的名称命名它们。 例如,电视&lt; -df [,c(1,2)]而不是:a2&lt; -df [,c(1,2)]
**更新:
将i + = 1更改为i = i + 1后,我收到此错误:
Error in paste("a", i, sep = "") <- df[, c(1, i)] :
target of assignment expands to non-language object
**更新2:
基于我用过的评论:
for(i in 2:length(colnames(df))){
name <- paste("a",i,sep ="")
name <- df[,c(1,i)]
i = i + 1
}
但只有一个数据框:
for(i in 2:length(colnames(df))){
name <- paste("a",i,sep ="")
assign(name) <- df[,c(1,i)]
i = i + 1
}
但是得到了错误:
Error in assign(name) <- df[, c(1, i)] :
could not find function "assign<-"
答案 0 :(得分:-1)
根据@eddi的答案,我得到了这个:
第一个回答:
for(i in 2:ncol(df)){
assign(paste("a", i, sep=''), df[,c(1,i)])
}
但是,因为我希望列名作为每个新数据框的名称,所以我稍微更改了代码:
for(i in 2:ncol(df)){
assign(paste(as.character(colnames(df[i])), i, sep=''), df[,c(1,i)])
}
谢谢@eddi ,.我不知道分配功能。