手动创建表时出现R colnames/rownames错误

手动创建表时出现R colnames/rownames错误,r,R,我试图直接从Rstudio中的数据创建一个简单的2列表 所以输出应该是 Material Kilograms Iron 5.54 Copper 2.12 Tin 0.27 Zinc 0.60 Nickel 0.23 Barium 0.05 Other 6.44 下面的例子是我应该遵循的一般语法 > smoke <- matrix(c(51,43,22,92,28,21,68,22,9),nc

我试图直接从Rstudio中的数据创建一个简单的2列表

所以输出应该是

Material    Kilograms
Iron        5.54
Copper      2.12
Tin         0.27
Zinc        0.60
Nickel      0.23
Barium      0.05
Other       6.44
下面的例子是我应该遵循的一般语法

> smoke <- matrix(c(51,43,22,92,28,21,68,22,9),ncol=3,byrow=TRUE)
> colnames(o) <- c("High","Low","Middle")
> rownames(o) <- c("current","former","never")
> smoke <- as.table(smoke)
> smoke
        High Low Middle
current   51  43     22
former    92  28     21
never     68  22      9
>冒烟colnames(o)rownames(o)冒烟
高低中
当前51 43 22
前922821
从不68 22 9
因此,调整我的代码这就是我创建的内容,注意我希望第一列有一个材质名称

levels <- matrix(c(5.54,2.12,0.27,0.60,0.23,0.05,6.44),ncol=1,byrow=TRUE)
colnames(0) <- c("Materials","Kilograms")
rownames(0) <- c("Iron","Copper","Tin","Zinc","Nickel","Barium","Other")
levels <- as.table(levels)
levels

levels表格用于数字。frame是存储混合数据类型(和一般数据)的标准结构

您可以使用以下选项:

o <- data.frame(Material=c("Iron","Copper","Tin","Zinc","Nickel","Barium","Other"), Kilograms=c(5.54,2.12,0.27,0.60,0.23,0.05,6.44), row.names=c("Iron","Copper","Tin","Zinc","Nickel","Barium","Other"))

但结果将按字母顺序对材料级别进行排序。

您在最后两段代码中混合了0和o。但是,问题是,最初将数据写入“levels”,然后将行和列命名为“o”


通常,用与函数相同的名称调用变量是个坏主意,在本例中为“levels”。

我找到了一个改编自的答案

答案看起来很容易解决,不需要复杂的语法,这在R教程和我之前搜索过的其他答案中都有

materials <- c("Iron","Copper","Tin","Zinc","Nickel","Barium","Other")
kilograms <- c(5.54,2.12,0.27,0.60,0.23,0.05,6.44)
levels.data <- data.frame(materials,kilograms)

材质我找不到您在哪里创建了
o
对象。可能是链接中的输入错误什么是
o
?它在任何地方都没有定义?您是否尝试读取错误消息?我根本不懂这个教程。为了达到所需的输出,将
o
替换为
smoke
并跳过示例中未定义的
smoke,我最初认为它输入错误,因为你尝试了变体,并尝试将其留空,但也收到了一个空错误。或者你可以跳过这个无意义的教程,只使用一个线性
矩阵(c(51,43,22,92,28,21,68,22,9),ncol=3,byrow=TRUE,dimnames=list(c(“当前”,“以前”,“从未”),c(“高”,“低”,“中”))
遵循“一行”原则对我也不起作用。levels OP的矩阵中没有不同的类,因此不需要使用
数据。frame
在这种情况下,似乎可以创建这样的基本表。实际上,我可以更快地编写csv文件并导入它,或者在excel中创建这样的标准表并导出到csv。您同意吗?@davidernburg数据是文本(字符/因子)矢量和数字矢量。@我认为这取决于具体情况。使用data.frame函数非常灵活,但是对于大量数据,最好在excel或数据库之类的程序中键入它们。在R中,如果以交互方式工作,则可以使用
fix
功能编辑对象。
xtabs(Kilograms~Material, data=o)
materials <- c("Iron","Copper","Tin","Zinc","Nickel","Barium","Other")
kilograms <- c(5.54,2.12,0.27,0.60,0.23,0.05,6.44)
levels.data <- data.frame(materials,kilograms)