从R中的数据帧中获取单个值

从R中的数据帧中获取单个值,r,R,假设我有一个数据帧df,例如: col1 col2 x1 y1 x2 y2 在每个“单元格”中具有任意值。 如何获取给定单元格的单个值 例如,要获取第一行和第二列中单元格的值,请执行以下操作: df[1,2] 可用于数值,但也可用于字符串返回级别 获取单个值的正确方法是什么(例如用于另一数据帧子集的条件) 编辑 关于我需要这个的更多细节。假设我需要使用df中的值来子集另一个数据帧df2: subset(df2, (id == SomeCommand(df[1,1])) & (

假设我有一个数据帧df,例如:

col1 col2
x1   y1
x2   y2
在每个“单元格”中具有任意值。 如何获取给定单元格的单个值

例如,要获取第一行和第二列中单元格的值,请执行以下操作:

df[1,2]
可用于数值,但也可用于字符串返回级别

获取单个值的正确方法是什么(例如用于另一数据帧子集的条件)

编辑 关于我需要这个的更多细节。假设我需要使用df中的值来子集另一个数据帧df2:

subset(df2, (id == SomeCommand(df[1,1])) & (name == SomeCommand(df[1,2])))

是否有任何这样的“SomeCommand”可以可靠地返回适当类型的单个值(w/o levels),而不管df中的列的类型如何?

R将设法找出您想要的内容。如果你强迫自己扮演一个角色,它应该会起作用。这里有一个简单的例子

> xy <- data.frame(a = c(0.1, 0.2, 0.3), b = factor(1:3), c = letters[1:3])
> 
> xy$a == 0.1
[1]  TRUE FALSE FALSE
> xy$a == "0.1"
[1]  TRUE FALSE FALSE
> xy$b == "2"
[1] FALSE  TRUE FALSE
> xy$b == 2
[1] FALSE  TRUE FALSE
> xy$c == "a"
[1]  TRUE FALSE FALSE
>xy
>xy$a==0.1
[1] 真假假假
>xy$a==“0.1”
[1] 真假假假
>xy$b==“2”
[1] 假真假
>xy$b==2
[1] 假真假
>xy$c==“a”
[1] 真假假假

一种有效的方法是,在创建数据帧时定义数据帧的类: 例如:

my_table = read.table("myfile.txt", sep=" ", colClasses = c("character", "character", "numeric"))

as.character(df[1,2])
@Ronak Shah:这对字符串以外的任何东西都不起作用,对吗?无论是哪种类型的值,是否有任何“健壮”的方法来获取单个值?也许我的问题还不够清楚。什么@RonakShah,你应该强迫它使用
因子
以外的东西。但在本质上,它仍然只是一个值。@GuitarExtended不,它将强制任何字符。这比说成.numeric更健壮,这会弄乱因子(返回级别号,而不是实际级别值)。话虽如此,您可能不需要强制另一种类型来使用它进行进一步的子集设置。@RomanLuštrik但如果我想在条件中使用结果,比如:
subset(df2,id==as.character(df[1,2])
,其中“id”是数字,这不是一个问题。