这里我有一个数据帧和向量
input.addEventListener('keydown', (e) => {if (e.keyCode == 13) doSomething()});
以上是我的数据框,我发现属性的相关性,如(mpg,spd),(mpg,wt),(mpg,ast),(mpg,alp),(spd,wt)等等。 nC2迭代,需要将这些值附加到新数据框中具有特定名称的新列
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
这里我想在vector中添加名称的新列,并将值附加到b中 我想要的ouptut:
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]
}
答案 0 :(得分:1)
假设您已有一些数据帧:
x <- data.frame(numeric(1000))
您可以使用其list
语法在循环中添加更多带名称的列。毕竟data.frame
是特殊列表。
> is.list(x)
[1] TRUE
您可以在for循环中添加更多列,如下所示:
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
请注意,这不是一个很好的练习,并且不能很好地扩展。你真的不想成长这样的对象,因为必须重新分配内存的成本。如果你事先知道你将需要多少列(并且你这样做,因为你循环使用它们的名字),最好只创建整个数据帧,然后在循环中填充它。