(添加了可复制的示例)。考虑以下示例:
df <- as.data.frame(matrix(c(1,2,3, 11,12,13), nrow = 2, ncol=3))
# V1 V2 V3
# 1 1 3 12
# 2 2 11 13
rownames(df) # "1" "2"
dput(df)
# structure(list(V1 = c(1, 2), V2 = c(3, 11), V3 = c(12, 13)), .Names = c("V1",
# "V2", "V3"), row.names = c(NA, -2L), class = "data.frame")
dput
的{{1}}(即row.names
,NA
)与从-2L
返回的值(即rownames()
)不一致,1
)。为什么?
PS1:有人可以添加2
标签,我没有足够的声誉来做到这一点(即1500分)吗?
PS2:What's the difference between row.names() and attributes$row.names?有一个类似的问题。在链接中,使用dput
和row.names
(均带点)。但是,在此问题中,出现$row.names
和rownames
(无点和点缀)。也就是说,给定的链接是有帮助的,可以极大地解决问题。
答案 0 :(得分:1)
handleAddList(s) {
this.setState({lists :this.state.lists.concat([s]) });
}
为您或您的程序提供了一些阅读和理解的内容(以一致且可预测的格式)。
与此相反,handleAddList(s) {
this.setState({lists :this.state.lists.concat([s]) }, () => { console.log(this.state.lists)});
}
以row.names()
的格式给出dput()
,以使row.names=
了解从attributes()
收到它的情况,这与行名存储在内部的方式有关数据框。 structure()
表示它们是从1到x的自动生成的名称。
c(NA, -xL)
和row.names()
之间有一些有趣的变化:
dput()
只有在上一次测试中它们是相同的,而且有趣的是,即使是再次强制为数字的数字矢量,它们都将它们作为字符矢量返回。由于某些原因,df1 <- data.frame(list(a = 1:3, b = 3:1))
row.names(df1) # "1" "2" "3"
dput(df1) # row.names=c(NA, -3L)
df2 <- df1[-2,]
row.names(df2) # "1" "3"
dput(df2) # row.names=c(1L, 3L)
df2 <- df1[-1,]
row.names(df2) # "2" "3"
dput(df2) # row.names=2:3
row.names(df1) <- 3:1
row.names(df1) # "3" "2" "1"
dput(df1) # row.names=c(3L,2L,1L)
row.names(df1) <- as.numeric(c(2,3,4))
row.names(df1) # "2" "3" "4"
dput(df1) # row.names=c("2","3","4"))
没有选择dput()
,但是在第三项测试中却选择了2:4
。