R在特定位置向数据帧添加元素
我想在R中的数据帧的特定位置添加一行。我知道这个网站上有一些解决方案,但它们似乎不起作用。我知道rbind相当慢,但考虑到我只需要为单个元素执行,这并不重要: 例如:R在特定位置向数据帧添加元素,r,R,我想在R中的数据帧的特定位置添加一行。我知道这个网站上有一些解决方案,但它们似乎不起作用。我知道rbind相当慢,但考虑到我只需要为单个元素执行,这并不重要: 例如: vector_labour_brexit.m <- data.frame("value" = c(1,2,3,4,5,6,7,8,9)) temp <- rbind(vector_labour_brexit.m[1:5,], data.frame("value"=5000),
vector_labour_brexit.m <- data.frame("value" = c(1,2,3,4,5,6,7,8,9))
temp <- rbind(vector_labour_brexit.m[1:5,], data.frame("value"=5000),
vector_labour_brexit.m[6:nrow(vector_labour_brexit.m),])
vector_labour_brexit.m我们可以使用add_row
在某个位置添加特定行
library(tibble)
add_row(vector_labour_brexit.m , .before = 6, value = 5000)
# value
#1 1
#2 2
#3 3
#4 4
#5 5
#6 5000
#7 6
#8 7
#9 8
#10 9
OP代码中的问题是由于默认情况下drop=TRUE
当存在单个列或行时,它会删除维度
vector_labour_brexit.m[1:5,]
如果我们在子集设置时添加drop=FALSE
,它将起作用我们可以使用add\u row
在某个位置添加特定的行
library(tibble)
add_row(vector_labour_brexit.m , .before = 6, value = 5000)
# value
#1 1
#2 2
#3 3
#4 4
#5 5
#6 5000
#7 6
#8 7
#9 8
#10 9
OP代码中的问题是由于默认情况下drop=TRUE
当存在单个列或行时,它会删除维度
vector_labour_brexit.m[1:5,]
如果我们在子集设置时添加drop=FALSE
,它会起作用您的问题是,在索引结果中只有一列的data.frames时,返回值会简化为一个向量,这会混淆rbind
。为了安全起见,你可以这样做
vector_labour_brexit.m <- data.frame("value" = c(1,2,3,4,5,6,7,8,9))
temp <- rbind(vector_labour_brexit.m[1:5,,drop=FALSE],
data.frame("value"=5000),
vector_labour_brexit.m[6:nrow(vector_labour_brexit.m),,drop=FALSE])
vector\u labour\u brexit.m您的问题是,在为结果中只有一列的data.frames编制索引时,返回值被简化为一个使rbind
混淆的向量。为了安全起见,你可以这样做
vector_labour_brexit.m <- data.frame("value" = c(1,2,3,4,5,6,7,8,9))
temp <- rbind(vector_labour_brexit.m[1:5,,drop=FALSE],
data.frame("value"=5000),
vector_labour_brexit.m[6:nrow(vector_labour_brexit.m),,drop=FALSE])
vector_labour_brexit.m谢谢你,现在代码旁边的位置是1,2,3,4,5,61,7,8,9,10,而不是1,2,3,4,5,6,7,8,9,10。这只是视图问题还是发生了什么?data.frames保留了原始行名称,并为新data.frames创建了新的行名称。你关心行名吗?这真的不应该引起任何麻烦。您可以运行rownames(temp)谢谢!事实上,我现在不需要它们,但我不确定以后它是否会成为一个问题!不过,谢谢你,现在代码旁边的位置是1,2,3,4,5,61,7,8,9,10,而不是1,2,3,4,5,6,7,8,9,10。这只是视图问题还是发生了什么?data.frames保留了原始行名称,并为新data.frames创建了新的行名称。你关心行名吗?这真的不应该引起任何麻烦。您可以运行rownames(temp)谢谢!事实上,我现在不需要它们,但我不确定以后它是否会成为一个问题!这对我不起作用。With.before表示:“remove_rownames(out)中的错误:is.data.frame(.data)不是TRUE”,而With.before表示:“错误:在add_row()
中的新行必须使用已经存在的列:。在中找不到之前的列。
。@ToTom。对于我来说,这个例子很奇怪。我在第一篇博文中所写的价值观对我来说并不适用。我正在运行R3.6.1。不管怎么说,drop=FALSE的解决方案很好,所以这无关紧要。谢谢大家!@ToTom我使用的是R3.6.2
,但是。可能是因为。TIBLE的版本这对我不起作用。With.before表示:“remove_rownames(out)中的错误:is.data.frame(.data)不是TRUE”,而With.before表示:“错误:在add_row()
中的新行必须使用已经存在的列:。在中找不到之前的列。
。@ToTom。对于我来说,这个例子很奇怪。我在第一篇博文中所写的价值观对我来说并不适用。我正在运行R3.6.1。不管怎么说,drop=FALSE的解决方案很好,所以这无关紧要。谢谢大家!@ToTom我使用的是R3.6.2
,但是。可能是因为。TIBLE的版本