更改数据框的行名时出错:赋值目标扩展为非语言对象

时间:2017-03-09 17:35:27

标签: r

我正在尝试制作一组​​数据帧,它们分别有不同的行数。(数据帧:seg1到seg10) 但是在rbind进程之后,最后一行名称变成了一个我想改成“中心”字符的数字,这就是我尝试过的。

for (i in 1:10){
  assign( paste( "seg", i, sep="" ), rbind( kth_df[ kth_km$cluster ==i, ], kth_km$centers[ i, ] ) )
  last_row <- dim( get( paste( "seg", i, sep="" ) ) )[1]
  rownames( get( paste( "seg", i, sep="" ) ) )[last_row] <- "center"
}

但是这给了我

  

'赋值目标扩展为非语言对象'

最后一句错误。我无法弄清楚我做错了什么以及我应该如何更改代码。 谢谢你的帮助!

 kth_df where cluster segment is 1
      1100  1111  1123  1126
1     2      3     4     0
2     3      0     1     2

kth_kmkmeans聚类数据之后的列表。所以我想在最后一行添加“中心”矢量,如

kth_df
      1100  1111  1123  1126
1     2     3     4     0
2     3     0     1     2
3     2.5   1.5    2.5    1

然后将最后一行名称更改为“中心”。

1 个答案:

答案 0 :(得分:0)

试试这个:

<span *ngFor="let tag of cloud" [ngClass]="'cloud{{ tag.weight }}'">
    {{ tag.term }}
</span>

<!-- <span class="cloud0">1994</span>
<span class="cloud0">2017</span>
...

你会得到同样的错误。

现在尝试使用代码的这种变体。

get("iris")[1] <- 1

您将收到以下错误(我认为)解释了您的代码无效的原因。

  

rownames中的错误(get(my_name))[last_row]&lt; - “center”:不能   找到函数“get&lt; - ”

解决方案是创建数据框列表。

for (i in 1:10){
  my_name <- paste("seg", i, sep = "")
  assign(my_name, rbind(i, i*i))
  last_row <- dim(get(my_name))[1]
  print(last_row)
  rownames( get(my_name) )[last_row] <- "center"
}

如果你想要他们的名字。

list_of_df <- lapply (1:10, function(i)){
  a_df <- rbind(kth_df[kth_km$cluster == i, ], kth_km$centers[i, ])
  last_row <- dim(a_df)[1]
  rownames(a_df)[last_row] <- "center"
  a_df
}