R当列表为单数时,意外行为将列表转换为data.table
我正在与一家本地回购公司合作,无意中发现了一件让我对列表索引理解混乱的事情R当列表为单数时,意外行为将列表转换为data.table,r,data.table,R,Data.table,我正在与一家本地回购公司合作,无意中发现了一件让我对列表索引理解混乱的事情 as.data.table( available.packages(url, type="win.binary")[, c("Package","Version","Depends","Repository")] ) 如果“url”处的回购协议有多个包,我会得到预期的结果: Package Version Depends
as.data.table(
available.packages(url, type="win.binary")[, c("Package","Version","Depends","Repository")]
)
如果“url”处的回购协议有多个包,我会得到预期的结果:
Package Version Depends Repository
1: truncnorm 1.0-7 R (>= 2.15.0) file:///D:/Repo/bin/windows/contrib/3.3
2: yacca 1.1 R (>= 1.8.0), utils file:///D:/Repo/bin/windows/contrib/3.3
但当回购协议只有一个组合时:
V1
1: truncnorm
2: 1.0-7
3: R (>= 2.15.0)
4: file:///D:/Repo/bin/windows/contrib/3.3
它似乎已将列表行转换为列。为什么它将单个列表组件视为一个向量(或者正在进行其他操作) 由@lmo回答
默认情况下,如果维度是冗余的,R将折叠该维度。
要停止此行为,请使用drop=FALSE选项
available.packages(url, type="win.binary")[, c("Package","Version","Depends","Repository"), drop=FALSE]
由@lmo回答
默认情况下,如果维度是冗余的,R将折叠该维度。
要停止此行为,请使用drop=FALSE选项
available.packages(url, type="win.binary")[, c("Package","Version","Depends","Repository"), drop=FALSE]
我怀疑当您调用或子集
available.packages
时,会发生这种转换。它不返回字符矩阵,而是返回字符向量。R定期进行这种简化。如果您不希望出现这种行为,available.packages(url,type=“win.binary”)[,c(“Package”、“Version”、“dependens”、“Repository”),drop=FALSE]
可能会起作用。请参阅帮助(“[”)
有关drop Arguments的更多信息,谢谢@lmo,该帮助页正是我需要指出的。@ShayneH您可以自行回答问题,或者简单地删除它。我怀疑在调用或子集available.packages
时发生了此转换。它返回的不是字符矩阵,而是字符vector.R定期进行这种简化。如果您不希望出现这种行为,可用。包(url,type=“win.binary”)[,c(“包”、“版本”、“依赖”、“存储库”),drop=FALSE]
可能会起作用。请参阅帮助([”)
有关drop Arguments的更多信息,谢谢@lmo,该帮助页正是我需要指出的地方。@ShayneH您可以自行回答问题,也可以直接删除它