R 为什么我的矩阵不是数字?
我有一个32X32矩阵,列和行代表每个NFL球队。横穿各行表示该队击败对手的平均水平(由列名表示) 我为每个团队创建了32个向量:R 为什么我的矩阵不是数字?,r,matrix,R,Matrix,我有一个32X32矩阵,列和行代表每个NFL球队。横穿各行表示该队击败对手的平均水平(由列名表示) 我为每个团队创建了32个向量: nfl_data <- read.csv(file="2012NFLScoresMatrixNoNames.csv", h=T) colnames(nfl_data) <- NULL ari_s <- nfl_data[1,] atl_s <- nfl_data[2,] . . . was_s <- nfl_data[32,] a
nfl_data <- read.csv(file="2012NFLScoresMatrixNoNames.csv", h=T)
colnames(nfl_data) <- NULL
ari_s <- nfl_data[1,]
atl_s <- nfl_data[2,]
.
.
.
was_s <- nfl_data[32,]
a <- rbind(c(ari_s),c(atl_s),c(bal_s),c(buf_s),c(car_s),c(chi_s),c(cin_s),
c(cle_s),c(dal_s),c(den_s),c(det_s),c(grn_s),c(hou_s),c(ind_s),
c(jac_s),c(kc_s),c(mia_s),c(min_s),c(ne_s),c(no_s),c(nyj_s),
c(nyg_s),c(oak_s),c(phi_s),c(pit_s),c(sd_s),c(sea_s),c(sf_s),
c(stl_s),c(tb_s),c(tn_s),c(was_s))
a_trans <- t(a)
x <- solve(a_trans)
我一遍又一遍地看我是否有一个逗号,或者可能是一个o而不是一个0,但我什么也找不到。关于如何解决这个问题有什么建议吗?对象
a
是一个列表,而不是矩阵或数据框。请查看您的代码:
a <- rbind(c(ari_s),c(atl_s),c(bal_s),c(buf_s),c(car_s),c(chi_s),c(cin_s),
c(cle_s),c(dal_s),c(den_s),c(det_s),c(grn_s),c(hou_s),c(ind_s),
c(jac_s),c(kc_s),c(mia_s),c(min_s),c(ne_s),c(no_s),c(nyj_s),
c(nyg_s),c(oak_s),c(phi_s),c(pit_s),c(sd_s),c(sea_s),c(sf_s),
c(stl_s),c(tb_s),c(tn_s),c(was_s))
函数c
将classdata.frame
的对象转换为classlist
的对象
也许它更容易使用
solve(t(nfl_data))
由于
t
对象a
是列表,而不是矩阵或数据帧,因此数据帧nfl\u数据将转换为矩阵。请查看您的代码:
a <- rbind(c(ari_s),c(atl_s),c(bal_s),c(buf_s),c(car_s),c(chi_s),c(cin_s),
c(cle_s),c(dal_s),c(den_s),c(det_s),c(grn_s),c(hou_s),c(ind_s),
c(jac_s),c(kc_s),c(mia_s),c(min_s),c(ne_s),c(no_s),c(nyj_s),
c(nyg_s),c(oak_s),c(phi_s),c(pit_s),c(sd_s),c(sea_s),c(sf_s),
c(stl_s),c(tb_s),c(tn_s),c(was_s))
函数c
将classdata.frame
的对象转换为classlist
的对象
也许它更容易使用
solve(t(nfl_data))
由于执行str(a)
操作时的信息位t
,数据帧nfl\u数据
将转换为矩阵:
> str(a)
List of 1024
....
换句话说,a
是一个列表,而不是一个矩阵。错误消息'a'中的“numeric”限定符必须是数字矩阵
用于在用户尝试反转其他类型的矩阵(逻辑和字符)时阻止人们抱怨。在您的情况下,错误消息的意思是:“您没有给我一个任何排序的矩阵”
解决此问题的最简单方法就是转置数据帧:
solve(t(nfl_data))
其中,使用t()
将通过as.matrix()
强制功能将nfl\U数据
数据帧转换为矩阵。为了更加明确,如果您的数据可能包含因子,那么您可能希望通过data.matrix()
,例如
solve(t(data.matrix(nfl_data)))
但无论哪种方式,都不需要手动从数据帧中取出每一行向量,按行绑定,然后转置。执行str(a)
时的信息位如下:
> str(a)
List of 1024
....
换句话说,a
是一个列表,而不是一个矩阵。错误消息'a'中的“numeric”限定符必须是数字矩阵
用于在用户尝试反转其他类型的矩阵(逻辑和字符)时阻止人们抱怨。在您的情况下,错误消息的意思是:“您没有给我一个任何排序的矩阵”
解决此问题的最简单方法就是转置数据帧:
solve(t(nfl_data))
其中,使用t()
将通过as.matrix()
强制功能将nfl\U数据
数据帧转换为矩阵。为了更加明确,如果您的数据可能包含因子,那么您可能希望通过data.matrix()
,例如
solve(t(data.matrix(nfl_data)))
但是无论哪种方式,都不需要手动从数据框中取出每一行向量,按行绑定然后转置。请发布
str(nfl\U数据)
和str(a)
…惊人!也许我错过了什么!你一行一行地获取nfl_数据,然后一行一行地重新定位,以计算转置。请发布str(nfl_数据)
和str(a)
的结果……太棒了!也许我错过了什么!你一行一行地获取nfl_数据,然后一行一行地重新定位,以计算转置。