变量前的美元符号

Posted

技术标签:

【中文标题】变量前的美元符号【英文标题】:Dollar sign before a variable 【发布时间】:2012-09-05 12:58:50 【问题描述】:

我有这个示例代码可以从现有数据框“my_data”创建一个新数据框“new_data”。

new_data = NULL
n = 10 #this number correspond to the number of rows in my_data
conditions = c("Bas_A", "Bas_T", "Oper_A", "Oper_T") # the vector characters correspond to the target column names in my_data
for (cond in conditions)
    for (i in 1:n)
        new_data <- rbind(new_data, c(cond, my_data$cond[i]))
    

问题是 my_data$cond(其中 cond 是一个变量,而不是列名)不被接受。

如何通过在美元符号后使用变量值来调用数据框的列?

【问题讨论】:

$ 并不是真的要以编程方式使用。它旨在为交互使用提供便利。尝试改用mydata[i,cond]。但是,查看您的代码,我认为您可能会受益于查看 reshape 函数,或者实际上是 reshape2 包...... 请注意,my_datadata.framenew_datamatrix 【参考方案1】:

$ 适用于列,而不是单个列对象。这是矢量化的一种形式。代码

corrections$BookDate = as.Date(corrections$BookDate, format = "%m/%d/%Y")

corrections 表的BookDate 列的内容从字符串转换为Date 对象。它在一个操作中执行,赋值。

执行以下操作,它将解决您的问题:

new_data <- rbind(new_data, c(cond, my_data$cond))

【讨论】:

【参考方案2】:

我猜你需要get()

例如get(x,list),其中list是列表,x是变量(可以是字符串),等于list$x

但是在get(x,list)x可以是变量,而$x不能是变量。

【讨论】:

【参考方案3】:

要访问列,请使用:

my_data[ , cond]

my_data[[cond]]

ith 行可以通过以下方式访问:

my_data[i, ]

将两者结合以获得所需的值:

my_data[i, cond]

my_data[[cond]][i]

【讨论】:

我们不能使用c$columnc 是一个矩阵吗?我收到Error in c$col1 : $ operator is invalid for atomic vectors... @Mahesha999 你不能在矩阵中使用$ 出于好奇,例如,如果我们想利用 $ 提供的部分匹配支持,我们就不能使用像 '$'(data,something(cond)) 这样的东西,它是我想要的一个或多个功能的组合不完全理解as.symbolas.expressionquoteenquotesubstituteetc这样的? 我想将 106 列添加到数据帧中,这些列是数据帧的长度,但用 0 填充。我如何循环这个? for (i in vector) df$i

以上是关于变量前的美元符号的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 中的 $ 变量(美元符号)?

如何在bash中回显包含未转义的美元符号的变量

linux的shell变量之美元符号

javascript 为什么javascript变量以美元符号开头

025_为什么JavaScript变量以美元符号开头?

在 IntelliJ IDEA 中调试 Java 期间生成的变量名称中的美元符号是啥意思?是闭包吗?