我想有这样的事情:
ParseResult
在for循环中创建的行将具有所有相同的列名。那么是否可以不初始化列名?
更新
谢谢大家的帮助 但是我的回答并不清楚,抱歉 我想在for循环中说明列的名称。
我现在收到以下消息:
match.names(clabs,nmi)中的错误:名称与以前的名称不匹配
而我能看到的是,列名中的空格变为点。
有没有办法让名字不会事先改变或改变。</ p>
答案 0 :(得分:3)
像这样对它进行初始化:
dataFrame<-NULL
db2<-data.frame(a=c(1,1,0,1,0,0))
rbind(dataFrame,db2)
a
1 1
2 1
3 0
4 1
5 0
6 0
从您的问题代码(稍微更改以使其运行):
for(i in 1:5)
{
row<-c(a=i,b=i,c=i)
dataFrame = rbind(dataFrame, row)
}
输出
DataFrame
a b c
row 1 1 1
row 2 2 2
row 3 3 3
row 4 4 4
row 5 5 5
答案 1 :(得分:2)
for(i in 1:20){
# create a row
if(i == 1) dataFrame <- t(row)
else dataFrame <- rbind(dataFrame, row)
}
实际上,最好为每列初始化一个向量,用循环填充向量,然后在循环后创建一个数据帧。
答案 2 :(得分:2)
NULL或在循环结束时将martix转换为数据帧:
df = data.frame(NULL)
for(i in 1:20){
row = i
df = rbind(df,row)
}
class(df)
> [1] "data.frame"
或
df = NULL
for(i in 1:20){
row = i
df = rbind(df,row)
}
class(df)
df = data.frame(df)
class(df)
答案 3 :(得分:2)
如果您事先知道类型,可以
df1 = data.frame(INTS = integer(0),
CHRS = character(),
NUMS = numeric(0))
for(i in 1:5){
row = setNames(data.frame(i, letters[i], i + 0.5), names(df1))
df1 = rbind(df1, row)
}
df1
# INTS CHRS NUMS
#1 1 a 1.5
#2 2 b 2.5
#3 3 c 3.5
#4 4 d 4.5
#5 5 e 5.5