R 使用get()访问结构中的深层数据
我在R内存中有一个R 使用get()访问结构中的深层数据,r,get,apostrophe,R,Get,Apostrophe,我在R内存中有一个p结构,我试图访问矩阵的Rate列 当我在控制台中键入p$6597858$Sample时,我得到 p$`6597858`$Sample Rate Available X Y [1,] 1.01 1520.93 0.00 0.0 [2,] 1.02
p
结构,我试图访问矩阵的Rate
列
当我在控制台中键入p$6597858$Sample
时,我得到
p$`6597858`$Sample
Rate Available X Y
[1,] 1.01 1520.93 0.00 0.0
[2,] 1.02 269.13 0.00 0.0
[3,] 1.03 153.19 0.00 0.0
[4,] 1.04 408.80 0.00 0.0
等等
当我尝试
get("p$`6597858`$Sample[,1]")
我把这个退了
object 'p$`6597858`$Sample[ ,1]' not found
这是撇号问题吗?无论是
$
还是[[
操作符都不能在get()
中工作(因为p[[1]]
不是R对象,它是对象的组件p
)
你可以试试
p <- list(`6597858`=list(Sample=data.frame(Rate=1:3,Available=2:4)))
z <- eval(parse(text="p$`6597858`$Sample[,1]"))
(编辑:哈德利·威克姆在评论中建议)或
总的来说
- 直接从列表中提取元素比使用
get()
- 为列表元素使用非标准名称(例如,需要使用反勾号保护的纯数字)是不明智的
比[[
$
- 无论是
$
还是[[
操作符都不能在get()
中工作(因为p[[1]]
不是R对象,它是对象p
的一个组件)
你可以试试
p <- list(`6597858`=list(Sample=data.frame(Rate=1:3,Available=2:4)))
z <- eval(parse(text="p$`6597858`$Sample[,1]"))
(编辑:哈德利·威克姆在评论中建议)或
总的来说
- 直接从列表中提取元素比使用
get()
- 为列表元素使用非标准名称(例如,需要使用反勾号保护的纯数字)是不明智的
比[[
$
get(“p[[[
6597858]][[“Sample”]][1]”)
;如果你能帮忙的话,我更强烈地建议避免使用非标准名称并使用get()
,我得到了这个复杂的p结构,它有子结构,其中一个被命名为6597858
>类(p$6597858
)[1]“列表”好的,你被非标准命名所困扰——但是为什么你需要get
?你想做什么?我得到了一个复杂的p结构,它有子结构,其中一个名为6597858
。这个6597858值将在我的程序过程中改变,因此我需要创建动态变量。更多信息…>class(p$6597858
)[1]“list”>class(p$6597858
$Sample)[1]“matrix”不过我认为你不需要get
。请看下面的例子。我强烈建议get(“p[
6597858][Sample]][1]”)
;我甚至更强烈建议避免使用非标准名称和get()
,如果你能帮忙的话……我得到了这个复杂的p结构,它有子结构,其中一个叫做6597858
>类(p$6597858
)[1]“列表”好的,你被非标准命名所困扰——但是为什么你需要get
?你想做什么?我得到了一个复杂的p结构,它有子结构,其中一个名为6597858
。这个6597858值将在我的程序过程中改变,因此我需要创建动态变量。更多信息…>class(p$6597858
)[1]“列表”>类(p$6597858
$Sample)[1]“矩阵”不过,我认为您不需要获取。请参见下面的示例。这两个建议都有效。对于第二个建议,我注意到您删除了开头和结尾的撇号。我不明白,最初也不会猜到。感谢您的帮助,本!非常感谢。我无法投票支持您,因为我没有必要的声誉ion:)反勾号不是标准的引号字符,它们是“保护”字符。(使用它们已经意味着你进入了非标准/棘手的领域。)你不能投票给我,但你可以接受答案(点击复选标记)如果您愿意的话。两点:在本例中,您可以使用引号而不是反勾号,并且可以通过使用递归索引稍微缩短索引:p[[c(as.character(需要),“Sample”,“Rate”)]]
这两个建议都起作用了。为了第二个建议起作用,我注意到你去掉了开头和结尾的撇号。我不明白,本来也不会猜到。感谢你的帮助,本!非常感谢。我不能投票支持你,因为我没有必要的声誉:)反勾不是标准的引号字符,它们是“保护”字符。(使用它们已经意味着你正在冒险进入非标准/棘手的领域。)你不能投票给我,但如果你愿意,你可以接受答案(点击复选标记)。两点:在这种情况下,你可以使用引号而不是反勾号,你可以通过使用递归索引稍微缩短索引:p[[c](如字符(需要)、“采样”、“速率”)]
needed <- 1234
x <- p[[as.character(needed)]][["Sample"]][,"Rate"]
x <- p[[c(as.character(needed),"Sample","Rate")]]
library(fortunes)
fortune(106)
If the answer is parse() you should usually rethink the question.
-- Thomas Lumley
R-help (February 2005)