我有多个dataframes,并且想删除其中的第一行。
我尝试使用for for循环,但无法理解我在做错了什么
for (i in cities){
i <- i[-1, ]
}
我得到以下错误代码:
i [-1,]中的错误:尺寸数量不正确
如果我们假设工作区中的唯一对象是数据框架,则可能会成功:
cities <- objects() )
for (i in cities) { assign(i, get(i)[-1,])}
说明:
原始代码的两件事是错误的:
在评论中已经提到了一个。" DF"与df
不同。您需要使用get
将字符值转换为用于检索具有该名称的对象的" true" R名称。object()
的结果只是字符值。在r中,"名称"是指"语言对象"。请参阅帮助页面:?mode
。(关于隆起和柱面名称的潜在混乱,这些混乱始终是"角色" - 类。(它不像SAS,这是一种没有这种区别的宏观语言。
第二个错误是试图在<-
的左侧替换i
。即使您正在使用实际的R名称,也会失败。assign
函数旨在处理然后转换为R名称的字符值。
说您获取环境中所有表的列表,然后调用该列表cities
。您不能仅仅迭代cities
的每个值并更改内容,因为在列表中它们只是字符。
这是您需要的:
for (i in cities){
tmp <- get(i) # load the actual table
tmp <- tmp[-1, ] # remove first column
assign(i, tmp) # re-assign table to original table name
}