R 将新列添加到数据框中,在循环中为每列指定不同的名称
这里有一个数据帧和向量R 将新列添加到数据框中,在循环中为每列指定不同的名称,r,R,这里有一个数据帧和向量 names mpg spd wt ast alp c1 0.34 12 34 43 2 c2 0.56 34 98 23 10 c1 0.9 847 43 23 20 c3 NA 234 34 34 45 c4 34 87 32 23 87 c5 89 98 98 NA NA 上面是我的数据帧
names mpg spd wt ast alp
c1 0.34 12 34 43 2
c2 0.56 34 98 23 10
c1 0.9 847 43 23 20
c3 NA 234 34 34 45
c4 34 87 32 23 87
c5 89 98 98 NA NA
上面是我的数据帧,我正在查找(mpg,spd),(mpg,wt),(mpg,ast),(mpg,alp),(spd,wt)等属性的相关性,需要在新的数据帧中用特定名称将这些值附加到新列中
vec=c('c1','c2','c4','c5')
for(i in 1:length(vec))
{
tb=cbind(p1,p2) #p1,p2 are data frames attributes for correlation eg:contains characters
tb[,ncol(tb)+1]=b #b is a dataframe which have stored correlation values of attributes
names(tb)[,ncol(tb)+1]=vec[i]
}
在这里,我想用vector中的名称附加新列,并将值附加到b中
我的愿望是:
p1 p2 c1 c2 c3 c4 c5
mpg spd 43 0.4 23 87 23
mpg wt 76 23 19 43 12
假设您已经有一些数据帧:
x <- data.frame(numeric(1000))
可以在for循环中添加更多列,如下所示:
vec=c('c1','c2','c4','c5','c6')
for(i in 1:length(vec)){
newCol <- numeric(1000)
x[[vec[i]]] <- newCol
}
但请注意,这并不是一个很好的实践,也不能很好地扩展。你并不真的想成为这样不断增长的对象,因为需要重新分配内存。如果您事先知道需要多少列(而且您知道,因为您正在循环它们的名称),那么最好只创建整个数据帧,然后在循环中填充它。从循环中分配列名:
colnames(tb)[,2:(length(vec)+1)]=vec
循环的目的是什么?代码非常简单strange@Asha这个问题一点也不清楚。你能给出例子和想要的结果吗?我已经编辑了这篇文章
vec=c('c1','c2','c4','c5','c6')
for(i in 1:length(vec)){
newCol <- numeric(1000)
x[[vec[i]]] <- newCol
}
> head(x)
numeric.1000. c1 c2 c4 c5 c6
1 0 0 0 0 0 0
2 0 0 0 0 0 0
3 0 0 0 0 0 0
4 0 0 0 0 0 0
5 0 0 0 0 0 0
6 0 0 0 0 0 0