标签: assign

在Javascript中为JSON对象赋值

这是我试图通过JavaScript或点或[]表示法构建的:

var shoppingCart = { 
        'item1' : {
            'description' : 'This is item #1',
            'price' : 10,
            'quantity' : 1,
            'shipping' : 0,
            'total' : 10
        }
    };
Run Code Online (Sandbox Code Playgroud)

现在,如果'item1'是变量名称itemName.

这有效:
var shoppingCart = {};
shoppingCart[itemName] = itemName;
alert(shoppingCart.item1);

哪个回报 item1

但这不起作用:
1 var shoppingCart = {};
2 shoppingCart[itemName]['description'] = 'This is Item #1';

JS刚刚在第2行去世,为什么?以及如何将描述值分配给"描述"?

我会这样做:

var shoppingCart = { 
        itemName : {
            'description' : description,
            'price' : price,
            'quantity' : quantity,
            'shipping' : shipping,
            'total' : total
        } …
Run Code Online (Sandbox Code Playgroud)

javascript json object assign

6
推荐指数
1
解决办法
4万
查看次数

简洁地同时分配名称和值

我发现自己经常写下以下两行.有简洁的替代方案吗?

      newObj  <- vals
names(newObj) <- nams

# This works, but is ugly and not necessarily preferred
'names<-'(newObj <- vals, nams)
Run Code Online (Sandbox Code Playgroud)

我正在寻找类似的东西(当然这不起作用):

newObj <- c(nams = vals)
Run Code Online (Sandbox Code Playgroud)

将它包装在一个函数中也是一个选项,但我想知道功能是否已经存在.

样本数据

vals <- c(1, 2, 3)
nams <- c("A", "B", "C") 
Run Code Online (Sandbox Code Playgroud)

r assign

6
推荐指数
2
解决办法
344
查看次数

R将列类从数据框分配(或复制)到另一个

我制作了一个大型数据框(1700 + obs,159个变量),其功能是从网站收集信息.通常,函数会查找某些列的数值,因此它们是数字的.但是,有时它会找到一些文本,并将整个列转换为文本.我有一个df,其列类是正确的,我想将这些类"粘贴"到一个新的,不正确的df.比方说,例如:

dfCorrect<-data.frame(x=c(1,2,3,4),y=as.factor(c("a","b","c","d")),z=c("bar","foo","dat","dot"),stringsAsFactors = F)
str(dfCorrect)
'data.frame':   4 obs. of  3 variables:
 $ x: num  1 2 3 4
 $ y: Factor w/ 4 levels "a","b","c","d": 1 2 3 4
 $ z: chr  "bar" "foo" "dat" "dot"

## now I have my "wrong" data frame:
dfWrong<-as.data.frame(sapply(dfCorrect,paste,sep=""))
str(dfWrong)
'data.frame':   4 obs. of  3 variables:
 $ x: Factor w/ 4 levels "1","2","3","4": 1 2 3 4
 $ y: Factor w/ 4 levels "a","b","c","d": 1 2 3 4
 $ z: Factor w/ …
Run Code Online (Sandbox Code Playgroud)

copy r class dataframe assign

6
推荐指数
1
解决办法
3522
查看次数

“&lt;-” 是否表示在 Haskell 中分配变量?

刚开始使用Haskell,据说除了IO包外,Haskell中的所有内容都是“不可变的”。因此,当我将名称绑定到某物时,它总是不可变的?问题,如下:

Prelude> let removeLower x=[c|c<-x, c `elem` ['A'..'Z']]
Prelude> removeLower "aseruiiUIUIdkf"
"UIUI"
Run Code Online (Sandbox Code Playgroud)

所以在这里:

1. “removeLower" is an immutable? Even it's a function object?
But I can still use "let" to assign something else to this name.

2. inside the function "c<-x" seems that "c" is a variable.
It is assigned by list x's values.
Run Code Online (Sandbox Code Playgroud)

我使用的是 C 语言中的“变量”这个词,不知道 Haskell 是如何命名它的所有名称的?

谢谢。

variables haskell immutability assign

6
推荐指数
2
解决办法
8879
查看次数

R-在函数内赋值

我需要从输入另一个数据框名称并重塑数据的函数中创建一个数据框。当我需要在输入表名称转换后命名输出时,问题就出现了。到目前为止我的代码是:

tablaXYZ<-data.frame(a=seq(1,2,1), 'X1'=seq(2,3,1), 'X2'=seq(3,4,1))
rownames(tablaXYZ)<-c('X1', 'X2')
Run Code Online (Sandbox Code Playgroud)

我写的函数是:

creaMelts<-function(tbl){
    library(reshape2)
    texto<-deparse(substitute(tbl))
    tbl2<-melt(tbl, id.vars=rownames(tbl))
    texto2<-substr(texto,4,nchar(texto))
    colnames(tbl2)<-c('userId','movieId', texto2)
    tblName<<-paste0('df', texto2)
    print(paste('tblName', tblName, ' '))
    assign(tblName, tbl2)
    return(assign(tblName, tbl2))
}
Run Code Online (Sandbox Code Playgroud)

当我运行时:

creaMelts(tablaXYZ)
Run Code Online (Sandbox Code Playgroud)

我得到:

"tblName dflaXYZ  "
Run Code Online (Sandbox Code Playgroud)

因此,考虑到“分配”工作在第二位给出的对象中返回,名称存储在第一位的对象中,例如:

 `m<-'hola'`
 assign(m, tablaXYZ)
Run Code Online (Sandbox Code Playgroud)

然后我要求 m,我得到:

"hola"
Run Code Online (Sandbox Code Playgroud)

但是如果我要求“hola”,我会得到一张桌子:

hola
   a X1 X2
X1 1  2  3
X2 2  3  4
Run Code Online (Sandbox Code Playgroud)

我以为我会有一个名为“dflaXYZ”的数据框,其中包含以下值:

  userId movieId laXYZ NA
1      2       3     a  1
2      3       4     a  2
Run Code Online (Sandbox Code Playgroud)

但如果我跑:

 dflaXYZ
Run Code Online (Sandbox Code Playgroud)

我只得到:

"dflaXYZ"
Run Code Online (Sandbox Code Playgroud)

如果我运行例如:

a<-creaMelts(tablaXYZ)
Run Code Online (Sandbox Code Playgroud)

然后要求“a”,我得到了想要的表。

  userId movieId laXYZ NA
1      2 …
Run Code Online (Sandbox Code Playgroud)

r function assign

6
推荐指数
1
解决办法
4530
查看次数

使用条件将属性从一个对象复制到另一个对象

懒惰我想知道是否有更好的方法将一个对象(源)中的属性复制到另一个对象(目标),只有在后者中存在属性时?它不一定要使用Underscore.

例如,

_.mixin({
    assign: function (o, destination, source) {
        for (var property in source) {
            if (destination.hasOwnProperty(property)) {
                destination[property] = source[property];
            }
        }
        return destination;
    }
});

console.log( _().assign({ a: 1, b: 2, d: 3 }, { a: 4, c: 5 }) ) // a: 4, b: 2, d: 3
Run Code Online (Sandbox Code Playgroud)

javascript underscore.js assign

6
推荐指数
2
解决办法
6911
查看次数

perl6 rakudo 2016.11 match 尝试分配给只读变量,为什么不在 2016.07 中?

我在 Rakudo 2016.07 中运行良好的操作类中有以下方法,但我刚刚安装了 2016.11,现在新的 Rakudo 说我的方法尝试分配给只读变量,我只是没有看到问题:

method ptName ($/) { 
    my $nameStr = $/.Str, my $lastName, my $firstName; 
    my $newMatch  # this is line 182; 
                  # Cannot assign to a readonly variable or a value
       = $nameStr.match(/ \" (<alpha>+) .*? \, \s* (<alpha>+) .*? \" /);
    $lastName  = $newMatch[0];
    $firstName = $newMatch[1];
    make "$lastName $firstName"; 
}
Run Code Online (Sandbox Code Playgroud)

整个错误信息是

Cannot assign to a readonly variable or a value
  in method ptName at /home/lisprog/Binary/grammar.pl line 182
  in regex ptName at /home/lisprog/Binary/grammar.pl line …
Run Code Online (Sandbox Code Playgroud)

readonly match rakudo assign raku

6
推荐指数
1
解决办法
256
查看次数

perl6语法动作:如果不使用$ /则无法做任何事情

我写了一个测试程序,现在似乎如果我不使用$/方法签名因为我必须在方法中使用.match,我就不能再做任何事了.我做错了什么?

另一个问题是,如果是.match集合$/,并且$/是只读的,那么我不能$/在包含.match语句的方法的签名中,并且我不能.match在方法内部有多个,因为每个都.match将尝试设置只读$/.这对编程来说非常尴尬.

这是测试程序,.match里面只有一个语句和结果:

测试程序:

grammar test {
    regex TOP   { <foo><bar> }
    regex foo   { :i \s* foo \s* }
    regex bar   { :i \s  bar \s* }
}

class actTest {
    method foo ($x) {              # program fails if I use $/ in signature
      print "1 "; say $x;          # how to combine the 2 and show $x as …
Run Code Online (Sandbox Code Playgroud)

readonly signature match perl6 assign

6
推荐指数
1
解决办法
76
查看次数

Liquid:如何将运算符的输出分配给变量?

我正在使用 Shopify 的 Liquid 模板。我希望某些元素仅在该月份恰好是 12 月时才显示。由于有多个元素需要这个,所以我想在文档顶部设置一个变量并稍后引用它。这是我所得到的有效的:

<!-- At the top of the page -->
{% assign month = 'now' | date: "%m" %}
{% if month == "12" %}
{% assign isDecember = true %}
{% else %}
{% assign isDecember = false %}
{% endif %}

<!-- Only show in December -->
{% if isDecember %}
Happy Holidays
{% endif %}
Run Code Online (Sandbox Code Playgroud)

这可行(为了测试,我将“12”更改为当前月份),但它非常难看。在大多数语言中我会这样做:

{% assign isDecember = (month == "12") %}
Run Code Online (Sandbox Code Playgroud)

Liquid 不接受括号,所以显然这是行不通的。没有括号它也不起作用。该文档提供了使用运算符和为变量分配静态值的示例,但没有介绍如何将两者结合起来。

我可以将过滤器的输出分配| …

operators variable-assignment liquid assignment-operator assign

6
推荐指数
1
解决办法
7597
查看次数

Python数据框使用带有2个变量的lambda函数和if else语句分配新列

设置数据框:

import pandas as pd
import numpy as np

np.random.seed(99)

rows = 10

df = pd.DataFrame ({'A' : np.random.choice(range(0, 2), rows, replace = True),
                    'B' : np.random.choice(range(0, 2), rows, replace = True)})

df


   A  B
0  1  1
1  1  1
2  1  0
3  0  1
4  1  1
5  0  1
6  0  1
7  0  0
8  1  1
9  0  1
Run Code Online (Sandbox Code Playgroud)

我想添加一列“C”,其值“X”为 df.A 和 df.B 均为 0,其他值为“Y”。

我试过:

df.assign(C = lambda row: 'X' if row.A + …
Run Code Online (Sandbox Code Playgroud)

python lambda dataframe assign pandas

5
推荐指数
1
解决办法
1万
查看次数